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

erro ao compilar

O código.

class Funcionario {




    String nome;
    String departamento;
    double salario;
    Data dataCadastro;
    String rg;

    class Data {

        int dia;
        int mes;
        int ano;

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

    }

    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("Salário: R$" + this.salario);
        System.out.println("Data de entrada: " + this.dataCadastro.preencheData.dia);
        System.out.println("Data de entrada: " + this.dataCadastro.preencheData.mes);
        System.out.println("Data de entrada: " + this.dataCadastro.preencheData.ano);
        System.out.println("RG: " + this.rg);
        System.out.println("Ganho anual: R$" + this.calculaGanhoAnual());
    }
}
class Programa{
    public static void main(String[]args){

        Funcionario douglas = new Funcionario();
        douglas.nome = "Douglas Ferreira da Silva";
        douglas.departamento = "vendas";
        douglas.salario = 4000;
        douglas.dataCadastro = new Data();
        douglas.dataCadastro.preencheData(19,10,1988);
        douglas.rg = "15245151";

        Funcionario carlos = new Funcionario();
        carlos.nome = "Carlos Silva";
        carlos.departamento = "RH";
        carlos.salario = 2500;
        carlos.dataCadastro = new Data();
        carlos.dataCadastro.preencheData(01,05,2010);
        carlos.rg = "12515548";

        Funcionario henrique = new Funcionario();
        carlos.nome = "Henrique Silva";
        carlos.departamento = "Financeiro";
        carlos.salario = 200;
        carlos.dataCadastro = new data();
        carlos.dataCadastro.preencheData(05,09,2002);
        carlos.rg = "98547545";

        douglas.mostra();
        carlos.mostra();
        henrique.mostra();

    }
}

O erro apresentado.

aula3ex8.java:71: error: integer number too large: 09
                carlos.dataCadastro.preencheData(05,09,2002);

Pq isso acontece?

3 respostas
solução!

Oi Douglas, tudo bem?

o que acontece é que na hora de instanciar a classe data, vc está passando o nome da classe com letra minúscula, então o Java não consegue entender que vc precisa de uma instancia da classe Data.

 Funcionario henrique = new Funcionario();
        carlos.nome = "Henrique Silva";
        carlos.departamento = "Financeiro";
        carlos.salario = 200;
        carlos.dataCadastro = new data(); // aqui está o problema, deveria ser new Data();
        carlos.dataCadastro.preencheData(05,09,2002);
        carlos.rg = "98547545";

e no lugar da variavel carlos, nesse caso seria melhor usar a henrique =)

Quando você chama o método mostra(), ao obter o dia você não pode fazer da dorma que está:

System.out.println("Data de entrada: " + this.dataCadastro.preencheData.dia);

System.out.println("Data de entrada: " + this.dataCadastro.preencheData.mes);

System.out.println("Data de entrada: " + this.dataCadastro.preencheData.ano);

O Correto é :

System.out.println("Data de entrada: " + this.dataCadastro.dia);

System.out.println("Data de entrada: " + this.dataCadastro.mes);

System.out.println("Data de entrada: " + this.dataCadastro.ano);

Show. Muito obrigado!!