programa de números impares suma

RobC:

Estoy escribiendo un programa en el que se supone que debo hacer un método que calcula si el número es impar pasado. Para este método, también necesito para comprobar que el número pasado es> 0, y si no es así, el retorno falsa. También se supone que debo hacer un segundo método con dos parámetros (inicio y fin, lo que representa un rango de números) y se supone que el método para utilizar un bucle para sumar todos los números impares dentro de ese rango. El extremo parámetro tiene que ser mayor que o igual a iniciar y ambos parámetros de inicio y final tiene que ser mayor que 0. Si estas condiciones no son satisfechas retorno -1 a partir del método para indicar entrada no válida.

Esta es la misión:

Escribir un método llamado ISODD con un parámetro int y llamarlo número. El método debe devolver un valor lógico. Compruebe que el número es> 0, si no es falso retorno. Si el número es impar retorno verdad, de lo contrario devuelve falso.

Escribir un segundo método llamado sumOdd que tiene 2 parámetros int inicio y fin, que representan un rango de números. El método debe utilizar un bucle para sumar todos los números impares en ese rango incluyendo el final y devolver la suma. Se debe llamar al método ISODD para comprobar si cada número es impar. El extremo parámetro tiene que ser mayor que o igual a iniciar y ambos parámetros de inicio y final tiene que ser mayor que 0. Si estas condiciones no son satisfechas retorno -1 a partir del método para indicar entrada no válida.

He intentado durante más de una hora, pero no lo estoy haciendo correctamente porque mi salida es incorrecto. Yo he escrito los resultados esperados y los resultados de mi a mi código.

Este es mi código:

public static boolean isOdd(int number){
    boolean status = false;
    if(number < 0){
        status = false;
    } else if(number % 2 != 0){
        status = true;
    }
    return status;
}
public static int sumOdd(int start, int end){
    int sum = 0;
    if((end < start) || (start < 0) || (end < 0)){
        return -1;
    }
    for(int i = 0; i <= end; i++){
        if((isOdd(i))){
            sum += i;
        }
    }
    return sum;
}

El resultado esperado es:

System.out.println(sumOdd(1, 100));// → should return 2500

System.out.println(sumOdd(-1, 100)); // →  should return -1

System.out.println(sumOdd(100, 100));// → should return 0

System.out.println(sumOdd(13, 13));// → should return 13 (This set contains one number, 13, and it is odd)

System.out.println(sumOdd(100, -100));// → should return -1

System.out.println(sumOdd(100, 1000));// → should return 247500

Mi resultado:

2500

-1

2500

49

-1

250000
Charles Dowbecki:

No declarar variables en el petición de su método, solamente crearlos cuando se necesitan. Como se ha señalado por Jordan el problema es con el foríndice de bucle, se debe partir de start, no 0:

public static boolean isOdd(int number) {
    if (number < 0) {
        return false;
    }
    return number % 2 != 0;
}

public static int sumOdd(int start, int end) {
    if ((end < start) || (start < 0) || (end < 0)) {
        return -1;
    }
    int sum = 0;
    for (int i = start; i < end; i++) {
      if (isOdd(i)) {
        sum += i;
      }
    }
    return sum;
}

Supongo que te gusta

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