1

Buenas necesito ayuda el siguiente código no está haciendo la evaluación del if luego de preguntar su continuar vuelve al comienzo del bucle.

import java.util.Scanner;

public class EjercicioCinco {

    public static void main(String[]args){

        Scanner sc = new Scanner(System.in);
        boolean continuamos = true;
        int auxNota = 0;
        int i = 0;
        String respuesta;

        do {

            System.out.println("Ingrese la nota");

            int nota = sc.nextInt();

            auxNota += nota;

             i++;

            System.out.println("Continuamos?");

            respuesta = sc.nextLine();

            if (respuesta == "n") continuamos = false;

        }while(continuamos);

        System.out.println("El Promedio de notas es : "+(auxNota/i));

    }

}
Ivan Botero
  • 6,513
  • 9
  • 33
  • 53
Maxi Hernandez
  • 73
  • 1
  • 3
  • 9

1 Answers1

1

Pienso tiene dos errores:

1- al comparar string, mirar esta pregunta la cual cuenta con varias respuestas sobre comparar string.

2- despues de leer un entero por ejemplo, y despues querer leer un string tiene que limpiar el buffer(buscando pregunta que lo explica)

bueno no la encontre, pero tiene que borrar el buffer, por ejemplo con nombre_de_su_scanner.nextLine(); antes de tomar el string algun string pues si antes obtuvo un dato numerico "se queda" en el buffer \n \\s\ o cualquier retorno lo que puede provocar que no le funcione bien, pues los metodos nextInt(); o cualquier nextX, no consumen lo mencionado, salvo .nextLine(); por ejemplo, asi que usamos esa llamada al metodo para limpiar el buffer del scanner


ahora cambie *respuesta == "n" por respuesta.equals("n") y añada sc.nextLine(); antes de respuesta = sc.nextLine();

import java.util.Scanner;

public class EjercicioCinco {

    public static void main(String[]args){

   Scanner sc = new Scanner(System.in);
    boolean continuamos = true;
    int auxNota = 0;
    int i = 0;
    String respuesta;

    do {

        System.out.println("Ingrese la nota");

        int nota = sc.nextInt();

        auxNota += nota;

         i++;

        System.out.println("Continuamos?");
        
        sc.nextLine();
        respuesta = sc.nextLine();

        if (respuesta.equals("n")) continuamos = false;

    }while(continuamos);

    System.out.println("El Promedio de notas es : "+(auxNota/i));

    }

}

Test:

Ideone.com

P.D: Si esta haciendo la evaluacion del if pero por lo mencionado en los puntos anteriores no hace lo que usted espera.

Angel Angel
  • 9,623
  • 9
  • 37
  • 68