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)

Adicionando o mesmo usuario

Bom dia,

estou formulando as classes empresas e a TestaEmpresa, o problema acontece quando tento inserir os usuarios e vou imprimir algumas informações deles,

só que ele me devolve as informações do primeiro usuario inserido. as informações do segundo usuario ele repete a do primeiro

obrigado

insira seu código aqui

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

        funcionario f2 = new funcionario();
        f2.nome = "gabriel bartholo batista";
        f2.departamento = "Tecnologia";
        f2.salario = 3300;

        funcionario f3 = new funcionario();
        f3.nome = "Renata do carmo lopes pedro";
        f3.departamento = "estagiaria";
        f3.salario = 3000;

        empresa.adiciona(f2);
        empresa.adiciona(f3);

        empresa.mostraEmpregados();

    }
}


public class Empresa {
    String nome;
    String cnpj;
    funcionario[] empregados;

    void adiciona(funcionario f) {
        for (int i = 0; i < this.empregados.length; i++) {
            if (empregados[i] == null) {
                empregados[i] = f;
            }
        }
    }

    void mostraEmpregados() {
        for (int i = 0; i < this.empregados.length; i++) {
            System.out.println("Nome do funcionario: " + this.empregados[i].nome);
            System.out.println("Sálario do funcionario: " + this.empregados[i].salario);

        }
    }
}
3 respostas
solução

Bom dia Gabriel,

1) Isso acontece pois, você está varrendo todas as posições do vetor e verificando se elas estão nulas, e atribui valores para todas, para corrigir isso, dentro do if adiciona um return, como abaixo:

    void adiciona(funcionario f) {
        for (int i = 0; i < this.empregados.length; i++) {
            if (empregados[i] == null) {
                empregados[i] = f;
                return;
            }
        }
    }

2) Também é necessário fazer uma correção no método de mostraEmpregados para demonstrar apenas os empregados preenchidos

void mostraEmpregados() {
        for (int i = 0; i < this.empregados.length; i++) {
            if (this.empregados[i] != null) {
                System.out.println("Nome do funcionario: " + this.empregados[i].nome);
                System.out.println("Sálario do funcionario: " + this.empregados[i].salario);
            }
        }
    }

Espero ter ajudado.

Bom dia Gabriel,

1) Isso acontece pois, você está varrendo todas as posições do vetor e verificando se elas estão nulas, e atribui valores para todas, para corrigir isso, dentro do if adiciona um return, como abaixo:

    void adiciona(funcionario f) {
        for (int i = 0; i < this.empregados.length; i++) {
            if (empregados[i] == null) {
                empregados[i] = f;
                return;
            }
        }
    }

2) Também é necessário fazer uma correção no método de mostraEmpregados para demonstrar apenas os empregados preenchidos

void mostraEmpregados() {
        for (int i = 0; i < this.empregados.length; i++) {
            if (this.empregados[i] != null) {
                System.out.println("Nome do funcionario: " + this.empregados[i].nome);
                System.out.println("Sálario do funcionario: " + this.empregados[i].salario);
            }
        }
    }

Espero ter ajudado.

joel muito obrigado resolveu meu problema abraço