1
resposta

[Dúvida] [duvida java] retorna ano bissexto mesmo nao sendo

nao importa o ano que eu digite, ele sempre retorna como se fosse um ano bissexto, mesmo não sendo.

package GerenciadorDeShopping;

public class Data {
    private int dia;
    private int mes;
    private int ano;

    public Data(int dia, int mes, int ano) {
        if (verificaData(dia, mes, ano)) {
            this.dia = dia;
            this.mes = mes;
            this.ano = ano;
            System.out.println("td blza");
        } else {
            System.out.println("Data inválida. Alterando para 01/01/2000.");
            this.dia = 1;
            this.mes = 1;
            this.ano = 2000;
        }
    }

    public boolean verificaAnoBissexto() {
        if(ano % 4 == 0) {
            return true;
        }else {
            return false;
        }
    }

    private boolean verificaData(int dia, int mes, int ano) {
        if(mes < 1 || mes > 12 || dia < 1) {
            return false;
        }

        int diasMes = 0;

        switch(mes) {
            case 2:
                if(verificaAnoBissexto()) {
                    System.out.println("ano recebendo 29");
                    diasMes = 29;
                } else {
                    System.out.println("ano recebendo 28");
                    diasMes = 28;
                }
                break;

            case 4:
            case 6:
            case 9:
            case 11:
                diasMes = 30;
                break;

            default: 
                diasMes = 31;
                break;
        }

        if(dia > diasMes) {
            return false;

        }return true;

    }



    public static void main(String[] args) {
        Data d1 = new Data(29, 2, 2021);


    }

}

1 resposta

Olá, Camilli!

Pelo que entendi, você está tendo problemas com a verificação de anos bissextos em seu código Java. É importante lembrar que um ano bissexto é aquele que é divisível por 4, exceto anos múltiplos de 100 que não são múltiplos de 400.

No seu código, a verificação do ano bissexto está sendo feita corretamente, mas acredito que o problema esteja na chamada do método verificaAnoBissexto() dentro do método verificaData(). Verifique se o valor do ano está sendo passado corretamente para o método verificaAnoBissexto().

Além disso, sugiro que você adicione algumas mensagens de erro no seu código, para que seja mais fácil identificar onde está o problema. Por exemplo, você pode adicionar uma mensagem de erro dentro do if que verifica se o ano é bissexto ou não.

if(ano % 4 == 0) {
    System.out.println("Ano bissexto!");
    return true;
} else {
    System.out.println("Ano não bissexto!");
    return false;
}

Espero ter ajudado e bons estudos!