Error assigning object to another class

0

In the code it moves the values of the employees with the first value entered and ignores the others.

for(int i=0; i<3; i++) {
            Empregados f = new Empregados();
            System.out.println("Qual é o salario do "  + (i+1) + " empregado? ");
            f.salario = entrada.nextDouble();
            f.numero = i + 1;
            e.adiciona(f);
        }

What is the error in the method?

company class:

public class Empresa {

    String nome;
    String localidade;
    Empregados[] empregados;
    int numFuncionarios;

    Empresa(String nome, String localidade) {
        empregados = new Empregados[3]; 
        numFuncionarios = 0;
        this.nome = nome;
        this.localidade = localidade;

    }

    void adiciona(Empregados e) {
        while(numFuncionarios < 3) {
            empregados[numFuncionarios] = e;
            numFuncionarios++;
        }

    }

    void mostraDadosEmpresa() {
        System.out.println("Nome: " + this.nome);
        System.out.println("Localidade: " + this.localidade);
        for(int count=0; count < empregados.length; count ++) {
            System.out.println("Empregado n." + (count + 1) + "salario: " + empregados[count].getSario());
        }

    }


}
    
asked by anonymous 05.07.2016 / 01:25

1 answer

1

The loop of your adiciona() method will always add a single employee to all three positions, and every time you add another employee, the loop will add that employee over all three positions again. To resolve, remove the loop and use a if condition:

void adiciona(Empregados e) {
    if(numFuncionarios < 3) {
        empregados[numFuncionarios] = e;
        numFuncionarios++;
    }
}
    
05.07.2016 / 02:04