¿Por qué no es esta sentencia if devolviendo el valor booleano?

Jacob Warren:

Estoy tratando de hacer un programa que va a mostrar si una entrada es un número perfecto es decir, los factores (sin incluir el número) se suman a ser el mismo que el número. Lo tengo trabajo que no sea el valor de retorno. Quiero devolver verdadero si la suma de los factores es igual al número introducido sin embargo, simplemente no lo hará.

He intentado mover la sentencia if todo el código y no funciona en cualquier lugar.

public class Main {

public static void main(String[] args) {
    isPerfectNumber(28);
}

public static boolean isPerfectNumber(int number) {
    if (number < 1) {
        return false;
    }
    int numberToTest = 1;
    int sumOfFactors = 0;

    while (numberToTest < number) {
        if (number % numberToTest == 0) {
            sumOfFactors += numberToTest;
        }
        numberToTest++;
    }

    if (sumOfFactors == number) {
        return true;
    }else{
        return false;
    }
}

}

Espero que cuando el código de ver que los sumOfFactors tendrán la suma = al número ingresado y fue entonces cuando me da la declaración verdadera sin embargo, cuando eso ocurre, no vuelve verdadera. De hecho, no devuelve nada y estados que no se utilizaron el método retorna.

Elliott fresca:

Que "no está funcionando", porque no va a imprimir el resultado.

public static void main(String[] args) {
    isPerfectNumber(28);
}

debiera ser

public static void main(String[] args) {
    System.out.println(isPerfectNumber(28));
}

cual es verdad". También,

if (sumOfFactors == number) {
    return true;
} else {
    return false;
}

Es un largo camino para escribir

return sumOfFactors == number;

Y, si usted está usando Java 8+, el isPerfectNumbermétodo puede escribirse como una sola línea con una IntStreamy un filtro lambda como

public static boolean isPerfectNumber(int number) {
    return number >= 1 && IntStream //
            .range(1, number) //
            .filter(i -> number % i == 0) //
            .sum() == number;
}

Supongo que te gusta

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