¿Cómo puedo multiplicar todos los dígitos de un número entero (entre 000 y 1.000 exclusiva) sin necesidad de utilizar las sentencias de control o bucles?

John Mulligan:

Estoy tratando de escribir un programa que se multiplican todos los dígitos de un número de 0 a 1.000 exclusiva utilizando únicamente las expresiones matemáticas en Java. Mi programa funciona bien siempre y cuando el usuario teclea un número de 3 dígitos, pero los resultados en 0 si se escriba nada menos que 100.

He tratado de conseguir el último dígito de la entrada con '% 10' y eliminar el último dígito con '/ 10' pero sin una sentencia de control para detectar si la entrada se ha reducido a cero, los extremos de los programas de hasta multiplicar por 0 cuando una número de 2 dígitos se ha reducido a cero, dando un resultado incorrecto.

public class MultiplyDigits {
    public static void main(String[] args){
        java.util.Scanner input = new java.util.Scanner(System.in);
        System.out.print("Enter a number between 0 and 1000: ");
        int number = input.nextInt();
        int product = 1;
        product*=number%10;
        number/=10;
        product*=number%10;
        number/=10;
        product*=number%10;
        System.out.println(product);
    }
}

Una entrada de 55 debería dar como resultado 25, pero mi programa hace 5 x 5 x 0 = 0

Una entrada de 999 resultados en 729, que es correcto. 9 x 9 x 9 = 729

Algunas aclaraciones más, este es un problema fuera del segundo capítulo de un libro de texto para los principiantes completos. El autor no ha cubierto las instrucciones de selección, bucles, escribir nuestros propios métodos o clases, o algo más avanzado que la programación primaria, por lo que la implicación es que esto es factible sin ellos. El libro ha cubierto invocar métodos en clases integradas en Java, aunque el autor sólo ha mencionado métodos en las clases de matemáticas y del sistema. Por ejemplo, Math.max (), Math.min (), Math.pow (), System.currentTimeMillis ();

Sergei Voychuk:

¿Qué pasa con esta variante. Para encontrar el primer número, se puede disminuir, en primer lugar, el número introducido por 100 y se añade 1 para evitar 0 durante multipication. Y, como recomendado NVioli, el segundo número debe ser el mismo actualizado para tener la posibilidad de introducir el número menor que 10. De este modo, la variante final es:

int number = input.nextInt();

    int t1 = 1 + (number-100) / 100;
    int t2 = (1 + (number-10) / 10) % 10; \\By NVioli
    int t3 = number % 10;

    int  product = t1 * t2 * t3;

    System.out.println(product);

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=192028&siteId=1
Recomendado
Clasificación