Ir ao conteúdo
  • Cadastre-se
Angeluz Gabriel

Mensagem do else aparece mais de uma vez

Recommended Posts

Estou aprendendo a programar em java na minha faculdade (Engenharia de Software) e estou usando Netbeans para testar os programas que faço.

No que estou fazendo atualmente, a mensagem do else, que deveria aparecer uma vez, acaba aparecendo mais de uma vez.

 

Segue o código:

 

import java.util.Scanner;
public class ex2{
    public static void main(String[]args){
        Scanner input = new Scanner(System.in);
        int dia;
        int mes;
       
        System.out.println("Insira o dia");
        dia = input.nextInt();
         System.out.println("Insira o mês");
         mes = input.nextInt(); 
    
                if (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8
                    || mes == 10 || mes == 12)
                if(dia > 0 && dia <=31)
               
                
                    System.out.println("Datá válida. Data: "+ dia +"/ "+mes+"/ "+2016);
                
                else 
                    System.out.println("Dia inválido");
               
                           
             if(mes == 4 || mes==6 || mes==9 || mes==11)
            
                if(dia>0 && dia <=30)
                    System.out.println("Datá válida. Data: "+ dia +"/ "+mes+"/ "+2016);
                    
             else
                    System.out.println("Dia inválido");
             
                  
            if(mes == 2 && dia > 0 && dia <=29)
                System.out.println("Datá válida. Data: "+ dia +"/ "+mes+"/ "+2016);
            
            else
                    System.out.println("Dia inválido");
            
                
                if (mes <1 || mes >12)
                    System.out.println("Mês inválido");
                
                
                if (dia <1 || dia >31)
                    System.out.println("Dia inválido");
                
                
    }
}


                            
                Quando fui testar para ver se estava compilando, eu coloquei um dia inválido para ver se estava aparecendo a mensagem do else certa. A mensagem apareceu, mas três vezes:

                 Insira o dia
                 32
                 Insira o mês
                 5
                 Dia inválido
                 Dia inválido
                 Dia inválido
                    
                
               
                

                
            
            
                
            
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Angeluz Gabriel

Isso acontece pois você está usando vários IFs independentes.

Para evitar o problema, você precisa usar um if dentro do outro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, tente utilizar as chaves "{" para facilitar onde abre e fecha a sua condição.

 

Outra coisa, perceba que dentro de um ELSE possui outros IFs com as mesmas mensagens. "Dia Inválido". Se a primeira condição for respeitada, aparecerá a mensagem. Se cair no Else, também aparecerá a mensagem. Evite usar linhas desse tipo, tentando deixar o código mais limpo. Por exemplo, no último ELSE:

 

else                     
//System.out.println("Dia inválido");                                              

if (mes <1 || mes >12)                     
  System.out.println("Mês inválido");                                                   
  
if (dia <1 || dia >31)                     
  System.out.println("Dia inválido");

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×