Concluido

a

Para algúem te ajudar tens de colocar a tua dúvida. Copy/paste de um enunciado não é uma dúvida. Ninguém vai (pelo menos não deveria) fazer o trabalho por ti. Mas muita gente te poderá ajudar nas tuas dúvidas.

public class Ava2 {

public static void main(String[] args) {
    
   
    
    
}

}
class diamesano{
private int dia, mes, ano;
public diamesano(int dia, int mes , int ano) {

    this.dia = dia;
    this.mes = mes;
    this.ano = ano;
    atualiza_dia();
    atualiza_mes();
    atualiza_ano();
    
} 
 

public int getDia() {
    return dia;
}

public int getMes() {
    return mes;
}

public int getAno() {
    return ano;
}

public void setDia(int dia) {
    this.dia = dia;
    
}

public void setMes(int mes) {
    this.mes = mes;
    atualiza_mes();
}

public void setAno(int ano) {
    this.ano = ano;
    atualiza_ano();
 
    
}

public void atualiza_dia(){
    dia = 01;
    atualiza_dia();

}
public void atualiza_mes(){
    boolean meses;
    meses = mes >= 01 && mes <=12;
}

public void atualiza_ano(){

     // se o ano for maior que 400
    if(ano % 400 == 0){
        System.out.println(ano + " é bissexto.");
    // se o ano for menor que 400
    } else if((ano % 4 == 0) && (ano % 100 != 0)){
        System.out.println(ano + " é bissexto.");
    } else{
        System.out.println(ano + " não é bissexto");
    }}

}

estou no caminho certo? queria saber como faço para poder validar o dia mes e ano

Acho que não está bom porque você só faz as verificações depois que já mudou os valores dos campos.

Seria melhor primeiro verificar, e só se a data for válida, aí você seta os valores. Algo assim:

public class DiaMesAno {
    private int dia, mes, ano;

    public DiaMesAno(int dia, int mes, int ano) {
        if (!valido(dia, mes, ano)) { // se não válida, nem cria a instância, lança uma exceção para indicar que está errado
            throw new IllegalArgumentException("Valores inválidos");
        }
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }

    private boolean bissexto(int ano) {
        return (ano % 4 == 0) && ((ano % 100) != 0 || (ano % 400) == 0);
    }

    private boolean valido(int dia, int mes, int ano) {
        if (mes < 1 || mes > 12) { // mês inválido
            return false;
        }
        // ver a quantidade de dias no mês
        int qtdDias = 31;
        if (mes == 4 || mes == 6 || mes == 9 || mes == 11) {
            qtdDias = 30;
        } else if (mes == 2) {
            qtdDias = bissexto(ano) ? 29 : 28;
        }
        if (dia < 1 || dia > qtdDias) {
            return false;
        }

        return true;
    }

    public int getDia() {
        return dia;
    }

    public int getMes() {
        return mes;
    }

    public int getAno() {
        return ano;
    }

    public void setDia(int dia) {
        // valida o novo dia, usando o mês e ano que já tem
        if (!valido(dia, this.mes, this.ano)) {
            throw new IllegalArgumentException("Valores inválidos");
        }
        this.dia = dia;
    }

    public void setMes(int mes) {
        // valida o novo mês, usando o dia e ano que já tem
        if (!valido(this.dia, mes, this.ano)) {
            throw new IllegalArgumentException("Valores inválidos");
        }
        this.mes = mes;
    }

    public void setAno(int ano) {
        // valida o novo ano, usando o mês e dia que já tem
        if (!valido(this.dia, this.mes, ano)) {
            throw new IllegalArgumentException("Valores inválidos");
        }
        this.ano = ano;
    }
}

Se a data for inválida eu lanço uma exceção, pois não acho que faz sentido criar uma instância se os valores não forem válidos. E veja como os métodos que fazem as verificações retornam um boolean, que indica se é válido ou não. Da forma que você fez, as verificações não servem para muita coisa. Já fazendo assim, você consegue saber se a data é válida ou não.


Claro que eu faria assim só se for um exercício, pois no Java já temos coisas prontas. A partir do Java 8, dá para usar java.time.LocalDate:

public class DiaMesAno {
    private LocalDate data;
    
    public DiaMesAno(int dia, int mes, int ano) {
        this.data = LocalDate.of(ano, mes, dia);
    }
}

Se a data for inválida, o método of já lança uma exceção (DateTimeException).