3
respostas

não consigo compilar

Ocorre um erro aparentemente referente à alguma chave, mas não consigo localizar o problema.. :(

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

    public Data(int dia, int mes, int ano){
            if (dataValida(dia,mes,ano)) {
                this.setData(dia,mes,ano);
            }
    }

    boolean dataValida(int dia, int mes, int ano){
        if (mes < 13 && mes > 0) {
        this.mes = mes;
            if (this.mes == 1 || this.mes == 3 || this.mes == 5 ||
            this.mes == 7 || this.mes == 8 || this.mes == 10 || this.mes ==  12) {
                if (dia <= 31 && dia > 0) {

                } else {
                    return false;
                }
            }
            if (this.mes == 2 ){
                if (dia < 29 && dia > 0) {

                } else {
                    return false;
                }
            } else {
                if (dia <= 30 && dia > 0) {

                } else {
                    return false;
                }
            }
        } else {
            return false;
        }
    }


    public void exibeData(){
        System.out.println(this.dia + "/" + this.mes + "/" + this.ano);
    }

  public void setData(int dia, int mes, int ano){
    this.ano = ano;
    }

}
3 respostas

Seu método dataValida não retorna nada caso a data seja realmente válida. Faltou o return true em:

if (dia <= 31 && dia > 0) {

}

certo, eu queria apenas verificar, pois se não me engano, quando o return acontece, nada mais é executado, e o método dataValida() verifica o dia e o mês..

estou vendo aqui também

if (dataValida(dia,mes,ano)) {
                this.setData(dia,mes,ano);
            }

acho que teria que colocar

if (dataValida(dia,mes,ano) == true) {
                this.setData(dia,mes,ano);
            }

Não precisa não, porque o if avalia um boolean. E, essa expressão (dataValida(dia, mes, ano) == true) retornaria um boolean, exatamente como a própria dataValida() retorna.

Essa verificação acaba sendo redundante, porque seria true == true, o que resultaria em true, entendeu?

Quando um método retorna boolean, pode ser usado diretamente em condicionais (if, while, etc...)

Espero ter ajudado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software