Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Qual o erro?

Não entendi porque na resposta esse metodo: if(! dataViavel(dia, mes, ano)) { System.out.println ("Data inexistente " + "(" + formatarData() + ")"); }

esta dentro de public Data(...) Não seria melhor como escrevi abaixo. Porém o código abaixo não esta rodando, o que esta errado? Obrigado!

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

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

    public void mostrarData(){
        if(! dataViavel(dia, mes, ano)) {
            System.out.println ("Data inexistente " + "(" + formatarData() + ")");
        } else {
            System.out.println (formatarData());
        }

    public boolean dataViavel (int dia, int mes, int ano) {
        if (dia <= 0 || mes <= 0 || ano <= 0 || mes > 12){
            return false;
        }
        int ultimoDia = 31;

        if (mes == 4 || mes == 6 || mes == 9 || mes == 11){
            ultimoDia = 30;
        } else if (mes == 2){
            ultimoDia = 28;
            if ((ano % 400 == 0) || ((ano % 4 == 0) && (ano % 100 != 0))) {
                ultimoDia = 29;
            }
        }

        if (dia > ultimoDia){
            return false;
        }

        return true;
    }

    public String formatarData(){
        return this.dia + "/" + this.mes + "/" + this.ano;
    }

}


class Programa{
    public static void main (String[] args){
        Data data = new Data (17, 2, 2017);
    }
}
2 respostas

Fala aí Raphaelli, tudo bem?

Para esse exemplo onde você só exibe uma mensagem no console, informando que a data está inválida.

As duas abordagens são válidas.

Mais para frente você vai aprender sobre exceções. E vai perceber que da forma que você implementou, é possível criar um objeto data com uma data 31/2/2012 por exemplo. Só não será possível mostra-la (pois só no método mostrarData você faz a validação). E esse objeto inconsistente pode gerar problemas por quem for usar.

Colocando a validação no construtor, e futuramente lançando uma exceção ao invés de simplesmente exibir uma mensagem. Você consegue garantir que nunca vai ter um objeto inconsistente.

  • OBS: Digo futuramente pois creio que até esse momento no curso você não tenha visto esse assunto.

Espero ter ajudado e bons estudos.

solução!

Oi Raphaelli,

Qual o erro que está dando? Batendo o olho no seu código tem um método faltando fechar as chaves:

mostrarData()