2
respostas

<= dentro de um if

No exercício 3 da aula 06 pensei em fazer:

class Data {
    int d, m, a;

    public Data() {
    }

    public Data(int data, int mes, int ano) { 
        this.d = data;
        this.m = mes;
        this.a = ano;
    }

    private boolean dataCorreta(Data date) {
        if (this.d <= 0 || this.m <= 0){
            return false;
        }
        if (this.m == 4 || this.m == 6 || this.m == 9 || this.m == 11){
            this.d <= 30;
        }
        else if (this.m == 2) {
            this.d <= 28;
            if ((this.a % 4 == 0)||(this.a % 400 == 0) || (this.a % 100 == 0)){
                this.d <= 29;
            }
        }
        else {
            this.d <= 31;
        }
        return true;
    }
}

Pensando em algo como: "se o mês for abril, o dia pode receber qualquer valor até 30."

Porém, me retorna o erro "not a statement" nas linhas das instruções sobre o dia.

Por que isso acontece? O if não aceita mais de uma instrução para a condição dada? Ou estou errando em outra coisa?

2 respostas

Olá Vinícius! Os operadores ==, <=, >= são de comparação. Comparações retornam true ou falso, isto é, é algo boleano. quando você coloca algo como: this.d = 30; você atribui ao atributo d o número 30. Porém, você colocou um comparador e assim ele não entende. ele entende: boolean bol = this.d <= 30; Bom.. o seu erro está meio grande no que se refere à lógica. O que você está tentando fazer está meio longe de funcionar para o teu propósito. Mas o erro que perguntou ocorre pelo motivo que expliquei.

Vinicius

eu não dei uma olhada no enunciado, mas focando apenas na sintaxe, não na çógica, esta faltando os returns adequados. Seu código deveria ficar assim

private boolean dataCorreta(Data date) {
        if (this.d <= 0 || this.m <= 0){
            return false;
        }
        if (this.m == 4 || this.m == 6 || this.m == 9 || this.m == 11){
            return this.d <= 30;
        }
        else if (this.m == 2) {

            if ((this.a % 4 == 0)||(this.a % 400 == 0) || (this.a % 100 == 0)){
                return this.d <= 29;
            }
              else  return this.d <= 28;
        }
        else {
            return this.d <= 31;
        }
    }