tags:

views:

418

answers:

1

Hi, sry about my english :)
Im new to Java programming and i have a problem with Scanner. I need to read an Int, show some stuff and then read a string so i use sc.nextInt(); show my stuff showMenu(); and then try to read a string palabra=sc.nextLine();

Some one told me i need to use a sc.nextLine(); after sc.nextInt(); but i dont understand why do you have to do it :(

Here is my code:

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 so much for your time and Help :D

+1  A: 

nextInt() only reads in until it's found the int and then stops.

You have to do nextLine() because the input stream still has a newline character and possibly other non-int data on the line. Calling nextLine() reads in whatever data is left, including the enter the user pressed between entering an int and entering a String.

Ben S
:O ty so much, i was wondering about it for too much time :)
Jonathan B
The first time I ran into this issue it stumped me too, but once you know why it makes sense!
Ben S
@Ben S: is nice to know im not the only one :D
Jonathan B