Pregunta

sry por mi Inglés :)
Im nuevo en la programación Java y tengo un problema con el escáner. Necesito leer un Int, mostrar algunas cosas y luego leer una cadena, así que uso sc.nextInt (); mostrar mis cosas showMenu (); y luego trato de leer una cadena palabra = sc.nextLine ();

Alguien me dijo que necesito utilizar un sc.nextLine (); después de sc.nextInt (); pero yo no entiendo por qué tienes que hacerlo: (

Aquí está mi código:

public static void main(String[] args) {
    // TODO code application logic here
    Scanner sc = new Scanner(System.in);
    int respuesta = 1;

    showMenu();
    respuesta = sc.nextInt();
    sc.nextLine(); //Why is this line necessary for second scan to work?

    switch (respuesta){
        case 1:
            System.out.println("=== Palindromo ===");
            String palabra = sc.nextLine();
            if (esPalindromo(palabra) == true)
                System.out.println("Es Palindromo");
            else
                System.out.println("No es Palindromo");
        break;
    }


}

Ty tanto por su tiempo y ayuda: D

¿Fue útil?

Solución

nextInt() sólo lee en hasta que se encontró el int y luego se detiene.

Tienes que hacer nextLine() debido a que el flujo de entrada aún tiene un carácter de nueva línea y, posiblemente, otros datos no int en la línea. Llamando nextLine() lee en lo que queda de datos, incluyendo el ingreso en el usuario presiona entre introducir un int e introduciendo una cadena.

Otros consejos

Cuando se introduce un valor (ya sea String, int, double, etc ...) y pulsa 'enter', un carácter de nueva línea (también conocido como '\n') se añadirá al final de su entrada. Por lo tanto, si usted está entrando en un int, sc.nextInt() será de sólo lectura del entero introducido y dejar el '\n' atrás en la memoria intermedia. Por lo tanto, la manera de solucionar este problema es añadir un sc.nextLine() que leerá el sobrante y tirarlo a la basura. Es por esto que es necesario tener que una línea de código en su programa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top