Pergunta

sry sobre meu inglês :)
Sou novo na programação Java e tenho um problema com o scanner. Eu preciso ler um int, mostrar algumas coisas e depois ler uma string, então eu uso sc.NextInt (); Mostre minhas coisas showmenu (); E então tente ler uma string Palabra = SC.NextLine ();

Alguém me disse que eu preciso usar um sc.nextLine (); depois de SC.NextInt (); Mas eu não entendo por que você tem que fazer isso :(

Aqui está o meu 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 muito pelo seu tempo e ajuda: D

Foi útil?

Solução

nextInt() Só lê até encontrar o INT e depois parar.

Você tem que fazer nextLine() Porque o fluxo de entrada ainda possui um caractere novo e possivelmente outros dados não-INT na linha. Chamando nextLine() lê o que resta, incluindo os dados, incluindo o usuário pressionado entre inserir um INT e inserir uma string.

Outras dicas

Quando você insere um valor (seja String, int, double, etc ...) e acertar 'Enter', um personagem de nova linha (também conhecido '\n') será anexado ao final de sua entrada. Então, se você está entrando em um int, sc.nextInt() só lerá o número inteiro e deixar o '\n' atrás do buffer. Então, a maneira de consertar isso é adicionar um sc.nextLine() Isso lerá o restante e o jogará fora. É por isso que você precisa ter essa linha de código em seu programa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top