Erro durante a execução do programa

Fala gente, beleza?

Estou fazendo um programa em Java que solicita informações de um usuário enquanto a resposta do usuário é “S” (ou “s” ou "S), mas durante a execução surge um comportamento inesperado, onde o programa “pula” a leitura da entrada no campo Nome.

Aqui está o código:

import java.util.Scanner;

public class Exercicio60 {

    public static void main(String[] args) {
        Scanner input = new Scanner (System.in , "ISO-8859-1");
        
        String nomeUsuario,
                  sexoUsuario,
                  respostaUsuario = "S";

        int idadeUsuario;
        
        while (respostaUsuario.equalsIgnoreCase("S")) {
            System.out.print("Nome: ");
            nomeUsuario = input.nextLine();
            
            System.out.print("Idade: ");
            idadeUsuario = input.nextInt();
            
            
            System.out.print("Sexo [M/F]: ");
            sexoUsuario = input.next();
            
            
            System.out.print("\nDeseja continuar? [S/N]: ");
            respostaUsuario = input.next();
            System.out.println(" ");
            
            
        }
        
        
        
        
    }
    
}

Alguém para ajudar???

Para ler do teclado não uses nextInt / next, mas apenas o nextLine. E depois converte para o tipo desejado. Caso contrário, com os métodos que não o nextLine vais ter estes problemas estranhos com a quebra de linha (enter) que não é devidamente lida.

1 curtida

O (mau) uso do Scanner é um assunto tão recorrente no fórum, que - olha o jabá :slight_smile: - acabei escrevendo este longo post pra explicar tudo em detalhes:

Mas a versão resumida já foi dita aí em cima: use nextLine, e se precisar converter para outro tipo (como número inteiro, por exemplo), use os respectivos métodos - no seu caso, seria Integer.parseInt(input.nextLine()).

Espero que ajude :+1:

2 curtidas

Valeu mano!
O Java e as suas peripécias! :sweat_smile:

Post longo mas bem explicativo!
O Java deveria se chamar “Racha Cuca” … :rofl:

1 curtida