import javax.swing.*;

class data
 {int dia, mes, ano;
  static boolean bissexto (int ano)
   {return ((ano%4==0 && ano%100!=0) || ano%400==0);}
   
  public static void main(String[] a) throws Exception
   {int ano = Integer.parseInt(JOptionPane.showInputDialog
    ("Digite o ano : "));
    int mes = Integer.parseInt(JOptionPane.showInputDialog
    ("Digite o mês : "));
    int dia = Integer.parseInt(JOptionPane.showInputDialog
    ("Digite o dia : "));
    
    data d = new data(dia,mes,ano);
    JOptionPane.showMessageDialog 
      (null,"Data é : " + d.dia + '\\' + d.mes + '\\' + d.ano );}
    
    
  public data (int dia, int mes, int ano) throws Exception  
   {if (ano < 1 || mes < 1 || mes > 12 || dia < 1 || dia > 31)
        throw new Exception ("Data inválida.");
    switch (mes)
      {case 2:
         if (bissexto (ano))
           if (dia > 29) throw new Exception ("Data inválida.");
         else if (dia > 28) throw new Exception ("Data inválida.");
         break;
       case 4:
       case 6:
       case 9: 
       case 11:
           if (dia > 30) throw new Exception ("Data inválida.");}                  

    this.ano = ano; this.mes = mes; this.dia = dia;
    }}    