Problemas com leitura e verificação de String

Olá amigos, coloco abaixo uma parte de um exercício, onde tenho que perguntar se o usuário deseja sair do programa, porém, ele não lê a resposta do usuário.

System.out.println("Deseja sair?");
sair = scan.nextLine();

if (sair.equals("sim") || sair.equals("Sim")){
     System.exit(0);
} else {
     break;
}

Esse código está dentro de um loop correto?
Está acontecendo algum erro? O programa nunca encerra ou sempre encerra?
Você pode usar o: sair.equalsIgnoreCase("sim");
Dessa forma ele ignora as letras maiúsculas durante a comparação!
Se depois desse código não estiver mais nada, o programa encerra naturalmente!

1 curtida

Acredito que seja pq esta ficando salvo no buffer (area de memoria) a tecla Enter do scanner anterior.

System.out.println("Deseja sair?");
scan.nextLine();//Aqui irá pegar o Enter que esta no buffer
sair = scan.nextLine();

Ou então, utilize nextLine em todos os outros scanners e faça o casting (conversão de tipo) necessário.

1 curtida

Obrigada amigo, sou nova no Java e nem me liguei disso, resolvido o problema! :slight_smile:

Ele estava simplesmente ignorando a leitura da variável sair e terminando o programa, mas já consegui resolver