Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Estou com dúvida no curso de Primeiros passos com Java, no exercício do capítulo Começando com Orientação a objetos.

Bom, imagino que meu código está OK. Porém depois de compilar as classes, Data e Funcionario e a Principal (main), recebo o seguinte erro quando tento definir o valor para o dia da Data.

O erro é:

Integer number too large : 08 carlos.dataDeEntrada.addData(08,03,2014);

Ou seja, ele diz que o numero 08 é muito grande para um int. Isso não tem lógica.

Abaixo os meus códigos:

class Data {
    int dd, mm, aa;

    void addData(int dd, int mm, int aa){
        this.dd = dd;
        this.mm = mm;
        this.aa = aa;
    }
}
class Funcionario {
    String nome;
    double salario = 0;
    String departamento;
    Data dataDeEntrada;
    String rg;

    void recebeAumento(double valor){
        this.salario += valor;
    }
    double calculaGanhoAnual(){
        return this.salario * 12;
    }
    void mostra(){
        System.out.println("Nome: "+this.nome);
        System.out.println("Departamento: "+this.departamento);
        System.out.println("Data de Entrada:/nDia: "+this.dataDeEntrada.dd+"/nMes: "+this.dataDeEntrada.mm+"/nAno: "+this.dataDeEntrada.aa);
        System.out.println("RG: "+this.rg);
        System.out.println("Salario: "+this.salario);
        System.out.println("");
    }
}
public class Principal {
    public static void main(String[] args) {

        Funcionario carlos = new Funcionario();
        carlos.nome = "Carlos Almeida";
        carlos.salario = 724;
        carlos.departamento = "Atendimento";
        carlos.rg = "1020030";
        carlos.dataDeEntrada = new Data();
        // Setando Data
        carlos.dataDeEntrada.addData(08,03,2014);


        carlos.mostra();

    }
}
5 respostas

Cara, eu não manjo muito de java não mas só por desencargo de consciência: declara os atributos da classe Data assim ó:

int dd;

int mm;

int aa;

Só para ver o que acontece..

Digo isso pois fiz o equivalente no C# e ele reclamou exatamente disso hahaha

solução

Nossa cara. Esquece o que eu falei hahaha

É que ver atributos declarados sem modificadores explícitos e sem encapsulamento confunde bastante...

Sério, esquece o que eu falei! Desculpe por sujar o tópico :-(

Sim, eu já testei dessa maneira, mas obtive o mesmo erro.

Consegui fazer meu código rodar atribuindo 8 ou invés de 08. Por incrível que pareça assim funcionou.

Deu certo??

Caramba! Que estranho..