Erro na entrada de valor vazio

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).

[code]
import java.io.*;
public class Main {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    // TODO code application logic here
    try{

        int pessoas, pesmaiores, cont;

        BufferedReader leitor = new BufferedReader(new InputStreamReader(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 (IOException e){

}
}
}[/code]

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

Boa tarde Ziguifrid,

[code]
import java.io.*;

/**
*

  • @author Eduardo Gouveia
    */
    public class Main {

public static void main(String[] args)
{

 try
 { 
     int pessoas = 0;
     int pesmaiores = 0;
     int pesmenores = 0;
 
     BufferedReader leitor = new BufferedReader(new InputStreamReader(System.in));
        
     for ( int i = 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 (IOException e)
 { 
     e.printStackTrace();  
 }
  
 catch (ArithmeticException ex)
 {
    ex.printStackTrace();
 }  

}
} [/code]

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:

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.

run:
Entre com a idade.

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
        at java.lang.Integer.parseInt(Integer.java:468)
        at java.lang.Integer.parseInt(Integer.java:497)
        at exforum.Main.main(Main.java:29)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 5 segundos)

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.

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 For input string: "" 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;

[code]import javax.swing.JOptionPane;

/**
*

  • @author Eduardo Gouveia
    */
    public class Main {

    public static void main(String[] args)
    {

    try
    {
    int pessoas = 0;
    int pesmaiores = 0;
    int pesmenores = 0;

       for ( int i = 0; i < 10; i++ )
       {
          String idade = 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 (ArithmeticException ex)
    {
    ex.printStackTrace();
    }
    }
    }[/code]

Espero ter ajudado,

:slight_smile: