O código abaixo funciona perfeitamente como está, mas quando tento colocar o if do ano após o if do dia, não funciona mais corretamente. O que acontece é que o programa não testa mais o ano. Alguém pode me ajudar, por favor. Preciso com urgência.
Vou enviar abaixo as duas classes que fazem o programa funcionar:
A primeira classe:
package programa;
/**
*
* @author User
*/
public class Programa {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Data data = new Data(30,4,2020);
data.calculoIdade();
}
}
A segunda classe:
package programa;
import java.time.LocalDate;
import java.time.Period;
public class Data {
private Integer dia, mes, ano;
public Data(Integer dia, Integer mes, Integer ano) {
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
public boolean validarData() {
boolean diaCerto=false;
if(mes<1 || mes >12 ){
System.out.println("Informe um mes valido.");
}
if(ano > 2020){
System.out.println("Ano invalido");
}
if(dia<1 || dia>31){
System.out.println("Tem que ser de 1 a 31!!!");
} else{
switch (mes) {
case 4:
case 6:
case 9:
case 11:
return diaCerto = dia <= 30;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return diaCerto = dia <= 31;
default:
if(ano %4 ==0){
return diaCerto = dia<=29;
}else{
return dia<=28;
}
}
}
return true;
}
public void calculoIdade() {
if(validarData()){
LocalDate l = LocalDate.of(ano, mes, dia);
LocalDate now = LocalDate.now();
if(ano<=2020){
Period diff = Period.between(l, now) ;
System.out.println("Idade: " + diff.getYears() + " anos, " + diff.getMonths() + " meses, " + diff.getDays() + " dias");
}
} else {
System.out.println("Quantidade de dias excede o total de dias do mês");
}
}
}
Não quero modificar nada no funcionamento no programa, apenas inverter posições dos ifs.