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

Null. O que está errado?

class Funcionario {
    double salario;
    String dataEntrada;

    void mostra() {
        System.out.println("Salario: " + this.salario);
        System.out.println("Data de entrada: " + dataEntrada);
    }
}

class Empresa {
    Funcionario[] empregados;
    int livre = 0;

    void adiciona(Funcionario f) {
        this.empregados[this.livre] = f;
        this.livre++;
    }
}

class TestaEmpresa {
    public static void main(String[] args) {
        Empresa empresa = new Empresa();
            empresa.empregados = new Funcionario[10];

            Funcionario f1 = new Funcionario();
            f1.salario = 1000;
            f1.dataEntrada = "07/08/2016";
            empresa.adiciona(f1);

            Funcionario f2 = new Funcionario();
            f1.salario = 1700;
            f1.dataEntrada = "07/08/2016";
            empresa.adiciona(f2);

            empresa.empregados[0].mostra();
            empresa.empregados[1].mostra();
        }
}
6 respostas

Olá, Rafael.

Batendo o olho no código não consegui achar nenhum erro. Você pode mandar a mensagem de erro que está aparecendo?

Salario: 1700.0 Data de entrada: 07/08/2016 Salario: 0.0 Data de entrada: null

Rafael, achei!

Estamos com erro de lógica :-) O método adiciona da nossa class empresa está sempre adicionando o funcionário na primeira posição do array empregados.

Na linha que nós estamos incrementando um na variável livre está faltando atribuir o valor para ela. O código do método adiciona tem que ficar assim:

void adiciona(Funcionario f) {
    this.empregados[this.livre] = f;
    this.livre = this.livre++;
}

Se ficou alguma dúvida é só falar :-)

solução!

Marco Bruno, resolvi o problema.

A sua solução também apresentava como null na resposta.

Veja como ficou:

Funcionario f1 = new Funcionario();
f1.salario = 1000;
f1.dataEntrada = "07/08/2016";
empresa.adiciona(f1);

empresa.empregados[0].mostra();

Funcionario f2 = new Funcionario();
f1.salario = 1700;
f1.dataEntrada = "07/08/2016";
empresa.adiciona(f2);

empresa.empregados[1].mostra();

Rafael.

Que bom que conseguiu resolver. Aparecendo novas dúvidas posta aqui pra gente ir conversando :-)

Muito obrigado pela sua atenção e dedicação.

Bom dia.