Para responder a seguinte questão:
“Escreva um programa em Java que pe¸ca ao usu´ario para digitar o dia, o mˆes e o ano (iniciando
em 1) de uma data espec´ıfica e valide esta data. Por exemplo, o usu´ario n˜ao pode digitar
dias menores do que zero, mˆes maior que 12 ou um dia 31 para o mˆes de abril. Seu programa
deve considerar anos bissextos.”
Fiz este código:
import java.util.Scanner;
public class Main
{
public static void main(String [] args)
{
int dia, mes, ano;
Scanner teclado = new Scanner(System.in);
dia = teclado.nextInt();
mes = teclado.nextInt();
ano = teclado.nextInt();
if(dia <= 30 && mes == 4 || mes == 6 || mes == 9 || mes == 11 && ano <= 2017)
{System.out.println(dia + "/" + mes + "/" + ano);}
else if(dia > 30 && mes == 4 || mes == 6 || mes == 9 || mes == 11 && ano > 2017)
{System.out.println("Esta data não existe!");}
else if(dia <= 28 && mes == 2 && ano <= 2017)
{System.out.println(dia + "/" + mes + "/" + ano);}
else if(dia > 28 && mes == 2 && ano > 2017)
{System.out.println("Esta data não existe!");}
else if(dia <= 29 && mes == 2 && ano % 4 == 0 && ano <= 2017)
{System.out.println(dia + "/" + mes + "/" + ano);}
else if(dia > 29 && mes == 2 && ano % 4 != 0 && ano > 2017)
{System.out.println("Esta data não existe!");}
else
{System.out.println(dia + "/" + mes + "/" + ano);}
}
}
Acontece que o código não responde como eu gostaria, como em situações em que o usuário digita “31 6 2018” em que o programa aceita essa data ao invés de mostrar que esta data é inexistente
O que há de errado?