Opa, fala galera!!
Sou iniciante, e estou tentando implementar esse código…
Na pesquisa que fiz verifiquei que existe o métodos Date que faz isso de forma mais prática, porém
o exercício pede que seja feita declarando essas 3 variáveis conforme abaixo:
Escrever um método que receba como parâmetros três inteiros:
• dia
• mês
• ano.
Com base nestes valores, o método deve retornar o número de dias que restam para terminar o ano. Se algum parâmetro for inválido, o método deve lançar uma exceção não verificada.
O código está funcionando, porém gostaria de saber se existe uma forma mais prática
de implementar o código para o cálculo dos meses que tem 31 dias sem ter que listar
todos ai na condição do if.
Meu próximo passo será encaixar os blocos try catch.
Esse foi o código que fiz até agora:
import javax.swing.JOptionPane;
public class CalculaDias {
public static void main(String[] args) {
// Declarando e inicializando as variáveis
int dia = 0;
int mes = 0;
int ano = 0;
dia = Integer.parseInt(JOptionPane.showInputDialog(null, "Informe o dia:"));
mes = Integer.parseInt(JOptionPane.showInputDialog(null, "Informe o mês:"));
ano = Integer.parseInt(JOptionPane.showInputDialog(null, "Informe o ano:"));
int TdiasAno = 365;
int TdiasPassados = 0;
int DifDias = 0;
if (dia > 0 && dia < 32) {
TdiasPassados += dia;
} else {
System.out.println("Dia " + dia + " Inválido");
}
if (mes > 0 && mes < 13) {
if(mes == 2) {
TdiasPassados += 28;
} else {
if (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12) {
TdiasPassados += 1;
} else {
}
TdiasPassados += (mes - 1) * 30;
}
} else {
System.out.println("Mês " + mes + " Inválido");
}
if (ano > 0) {
// se o ano for maior que 400
if(ano % 400 == 0){
TdiasAno += 1;
// se o ano for menor que 400
} else if((ano % 4 == 0) && (ano % 100 != 0)){
TdiasAno += 1;
} else{
}
}
DifDias = TdiasAno - TdiasPassados;
System.out.println("Dias Passados " + TdiasPassados);
System.out.println("Restam " + DifDias + " Para Terminar o ano " + ano);
}
}
Desde já agradeço a ajuda.