O programa abaixo se o usuário de enter quando pede a idade dá erro. Como eu resolvo isto?
l) Escreva uma Programa que receba a idade de 10 pessoas, calcule e imprima a quantidade de pessoas
maiores de idade (idade maior= 18 anos).
importjava.io.*;publicclassMain{/** * @param args the command line arguments */publicstaticvoidmain(String[]args){// TODO code application logic heretry{intpessoas,pesmaiores,cont;BufferedReaderleitor=newBufferedReader(newInputStreamReader(System.in));cont=10;pesmaiores=0;pessoas=0;while(cont>0){System.out.println("Entre com a idade.");pessoas=Integer.parseInt(leitor.readLine());if(pessoas>=18){pesmaiores=pesmaiores+1;}cont--;}System.out.println("A quantidade de pessoas maiores de 18 anos é "+pesmaiores+".");}catch(IOExceptione){}}}
guarde o resultado de leitor.readLine() em uma string, no lugar de fazer o parse direto para int…
verifique se o que foi digitado é vazio, e se é um número, e não sendo mostre a msg, “Por favor digite um valor númerico” … fique no loop pedindo o valor numérico ate a pessoa digitar um número… so ai, passe a frente, e guarde o valor e de o increse no seu count…
boa sorte
Eduardog
Boa tarde Ziguifrid,
importjava.io.*;/** * * @author Eduardo Gouveia */publicclassMain{publicstaticvoidmain(String[]args){try{intpessoas=0;intpesmaiores=0;intpesmenores=0;BufferedReaderleitor=newBufferedReader(newInputStreamReader(System.in));for(inti=0;i<10;i++){System.out.println("Entre com a idade.");pessoas=Integer.parseInt(leitor.readLine());if(pessoas>=18){pesmaiores++;}else{pesmenores++;}}System.out.println("Quantidade de pessoas maiores de 18 anos é: "+pesmaiores+".");System.out.println("Quantidade de pessoas menores de 18 anos é: "+pesmenores+".");}catch(IOExceptione){e.printStackTrace();}catch(ArithmeticExceptionex){ex.printStackTrace();}}}
Ziguifrid dica:
*Sempre que for utilizar algo contador e que tenha um valor finito de variações (ex: 10) aconselho a estrutura de repetição
for(inicialização; condicional; incremento){} que facilitará e realizará uma limpeza em seu código em relação ao while(condicional){}
Coloquei também as pessoas menores caso precise
Espero ter Ajudado,
:lol:
Ziguifrid
Valeu Eduardog, só que ainda continua dando erro. Copiei o seu código e o erro persiste, quando dou enter na idade aparece isso no console.
Há não ser que tem que fazer o que o Lavieri disse no post anterior ao seu, só que eu não entendi como fazer.
Eduardog
Boa Tarde Ziguifrid,
Esta exceção é levantada quando você digita um valor que não corresponde a um digito [0..9] ocorreu comigo também so que era levantada quando eu digitava muito rápido e clica "Enter";
E justamente esta linha
Forinputstring:""
identifica que você está passando uma String branco como se estivesse realmente clicando enter duas vezes ao invés de entrar com um digito.
Aconselho realizar o procedimento de forma pausada para ter certeza que não seja isto;
De ante mão, irei fazer a mesma função de uma forma de entrada dos dados graficamente utilizando o JOptionPane;
importjavax.swing.JOptionPane;/**** @author Eduardo Gouveia*/publicclassMain{publicstaticvoidmain(String[]args){try{intpessoas=0;intpesmaiores=0;intpesmenores=0;for(inti=0;i<10;i++){Stringidade=JOptionPane.showInputDialog("Entre com a idade.");pessoas=Integer.parseInt(idade);if(pessoas>=18){pesmaiores++;}else{pesmenores++;}}JOptionPane.showMessageDialog(null,"Quantidade de pessoas maiores de 18 anos é: "+pesmaiores+".","Informação");JOptionPane.showMessageDialog(null,"Quantidade de pessoas menores de 18 anos é: "+pesmenores+".","Informação");}catch(ArithmeticExceptionex){ex.printStackTrace();}}}