o método está dando loop infinito, não sei porque!
privateintLerDadoInteger(intn){booleanflag=true;while(flag){System.out.println("digite o valor");try{n=inputN.nextInt();flag=false;}catch(InputMismatchExceptionc){flag=true;}}returnn;
Coloque uma mensagem de retorno na captura do erro, provavelmente ele está sempre entrando no catch
G
gabrielqn
private int LerDadoInteger(int n){
booleanflag=true;while(flag){
System.out.println("digite o valor");try{
n=inputN.nextInt();flag=false;}catch(InputMismatchExceptionc){
System.out.println("digite um Número");}
assim? mas o problema é porque ele não pedi o número novamente para eu digitar, ele fica no loop assim :
digite um Número
digite o valor
digite um Número
digite o valor
digite um Número
digite o valor
digite um Número
digite o valor
digite um Número
digite o valor
Rodrigomarden
Era uma mensagem apenas para retornar o erro.
Então em nenhum momento você digitou um valor ou apenas uma vez e ai ele não sai do loop?
Rodrigo_Void
O que vc está digitando exatamente?
Recomendo criar um novo inputN, deve estar com buffer. inputN = new Scanner...
D
Daniel_Moura
Não está caindo no try, coloque um if no lugar para testar.
G
gabrielqn
ele não sai do loop não, era para voltar no começo do while e pedi novamente o valor
G
gabrielqn
quero validar o dado, exemplo : se eu digitar uma string ou char ele captura no try/catch e pedi para digitar novamente o dado
Rodrigo_Void
Vc não precisa da flag. Pode fazer while(true) e colocar return n; depois da leitura.
G
gabrielqn
mas como irei captura a exception sem try/ cacth?
G
gabrielqn
excelente ideia, irei tentar aki! valew !
Rodrigo_Void
Pois então vai ficar em loop até digitar algo correto. Por isso pedi oq estava digitando de valor. Teste com um valor VÁLIDO pra ver se sai do loop. Pois a lógica está certa (se não for problema de buffer), deve sair do loop quando digitar um int válido.
G
gabrielqn
Isso é o buffer mesmo! pq primeiro eu digite errado(String) ae fica no buffer pq irei ler uma int depois!
Rodrigo_Void
Cria um novo Scanner então. Sempre recomendo isso. Pq se vc lê String fica em buffer.
G
gabrielqn
private int LerDadoInteger(int n){
booleanflag=true;while(flag){System.out.println("digite o valor");try{n=newScanner(System.in).nextInt();returnn;}catch(InputMismatchExceptionc){System.out.println("digite um Número");}}return0;
consegui resolver assim galera! Valew ae! Era Buffer mesmo!
Rodrigomarden
while(true){System.out.println("digite o valor");try{n=newScanner(System.in).nextInt();returnn;}catch(InputMismatchExceptionc){System.out.println("digite um Número válido!\n");}}return0;