Boa noite pessoal!
Passei por um problema quando utilizei o seguinte código (trecho com problema):
String endereco="";
String cep="";
int opc=0;
Scanner scan = new Scanner (System.in);
System.out.println("Selecione sua opção para manipulação da tabela: \n" +
"1) Incluir dados\n" +
"2) Alterar dados\n" +
"3) Excluir dados\n" +
"4) Buscar dados");
opc=scan.nextInt();
System.out.println("Digite o endereço");
endereco=scan.nextLine();
System.out.println("\n");
System.out.println("Digite o cep");
cep=scan.nextLine();
System.out.println("Endereço: "+endereco+" / CEP: "+cep);
Após digitar o número da informação, ao invés de ele me pedir para digitar o endereço, ele aparecia a linha
Digite o endereço
Digite o cep
e o resultado sempre me ignorava o endereço, ele vinha em branco!
A solução que encontrei foi usar o .nextLine no lugar do .nextInt. Aí fiquei na dúvida, e se eu tiver que usar apenas números? Isto é um bug ou é algo que há como corrigir?
Obrigado!
depois de nextQualquerTipo use um nextLine, do contrário o caracter de nova linha vai continuar no buffer de entrada e portanto o próximo nextLine vai passar batido.
Os nextQualquerTipo não recolhem o caracter de nova linha
1 curtida
Desculpa DavidUser, não consegui implementar, você poderia me dar um exemplo?
Obrigado!
String endereco="";
String cep="";
int opc=0;
Scanner scan = new Scanner (System.in);
System.out.println("Selecione sua opção para manipulação da tabela: \n" +
"1) Incluir dados\n" +
"2) Alterar dados\n" +
"3) Excluir dados\n" +
"4) Buscar dados");
opc=scan.nextInt();
scan.nextLine(); //apenas o nextLine remove o caracter de nova linha (gerado pelo seu Enter) da stream de entrada
System.out.println("Digite o endereço");
endereco=scan.nextLine();
System.out.println("\n");
System.out.println("Digite o cep");
cep=scan.nextLine();
System.out.println("Endereço: "+endereco+" / CEP: "+cep);
Eu recomendo usar o nextLine para tudo que for ler do teclado. Se precisar converter para números e outros tipos, use o Integer.parseInt.
Nossa pior que eu tentei algo assim aqui e não consegui, mas compreendi agora, estava pensando em uma utilização de apenas para String.
Muito obrigado DavidUser!
Entendi Bruno, faço a leitura e em seguida uso a conversão Integer.parseInt (ou o tipo que eu precisar). Valeu pela dica!