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

Array

Pessoal estou com algumas dúvidas com a manipulação de arrays coloquei alguns comentários nas classes abaixo, poderiam me ajudar?



public class Empresa {
    String nome;
    String cnpj;
    // Funcionario funcionario[]; tmb está correto desta forma?
    Funcionario[] empregados;

    //onde estou errando nesse método? Por que não está adicionando no array?
    void adiciona(Funcionario f) {
    //dou um new na Classe para que não fique adicionando o mesmo objeto na posição, é isso mesmo?
        Funcionario empregados = new Funcionario();

        for (int i = 0; i < this.empregados.length; i++) {
            //Aqui tento tratar para que adicione onde está null, se não tiver posicao nula ele sai, está correto?
            if (this.empregados[i] == null) {
                this.empregados[i] = f;
            } else {
                    break;
            }

        }

    }


}



public class TestaEmpresa {
    public static void main(String[] args){
        Empresa emp =new Empresa();
        emp.cnpj="222555";
        emp.nome="Vem quem quer";
        //aqui eu abro 5 espaços na memoria para carregar o array de Funcionario
        emp.empregados=new Funcionario[5];

        Funcionario f=new Funcionario();
        f.departamento="Contas";
        f.nome="Luana";
        emp.adiciona(f);
        System.out.println(emp);//como faço pra ver os valores do array?

        Funcionario f1=new Funcionario();
        f1.departamento="TI";
        f1.nome="Lucas";
        emp.adiciona(f1);
        System.out.println(emp);

        Funcionario f2=new Funcionario();
        f2.departamento="Direito";
        f2.nome="Lucia";
        emp.adiciona(f2);
        System.out.println(emp);

        Funcionario f3=new Funcionario();
        f3.departamento="Pagamento";
        f3.nome="Leticia";
        emp.adiciona(f3);
        System.out.println(emp);

        Funcionario f4=new Funcionario();
        f4.departamento="RH";
        f4.nome="Leona";
        emp.adiciona(f4);
        System.out.println(emp);
        /*
         * Aparece assim no console:
         * br.com.curso.meusTestes.Empresa@15db9742
         * br.com.curso.meusTestes.Empresa@15db9742
         * br.com.curso.meusTestes.Empresa@15db9742
         * br.com.curso.meusTestes.Empresa@15db9742
         * br.com.curso.meusTestes.Empresa@15db9742
         * Porque aparece dessa maneira? Como essa numeração está igual será q ele está colocando os valores
         * na mesma posicao?
         * 
         * 
         * */

        for (int i = 0; i < 5; i++) {
            System.out.println(emp.empregados[i]);

        }//nesse for estou tentando printar o array do objeto emp.empregados,mas aconteceu o mesmo q o de cima

    }

}
6 respostas

Funcionario[] empregados; // Sim, está correto.

Funcionario empregados = new Funcionario(); // Antes precisa inicializar o Array, pode fazer direto na declaração ou quando chama na classe de teste. // Declaração na classe Empresa: Funcionario[] empregados = new Funcionario[5]; // Declaração na classe de teste: empresa.funcionarios = new Funcionario[5];

Segue o exemplo do adiciona. class Empresa {

String nome; String cnpj; Funcionario[] funcionarios = new Funcionario[5]; int livre;

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

Siga os passos acima e responda se funcionou.

solução!

Opa Thaís, tudo bem ? Vamo lá: // Funcionario funcionario[]; tmb está correto desta forma? Não está. Isso é mais a cara de c/c++. Dava para falar melhor nisso, mas tem muita coisinha pra explicar, melhor da uma lida no seu curso, deve ter uma explicação melhor que a minha sobre variáveis.

Ficou estranho aqui: você tinah feito: Funcionario[] empregados; então criou uma array da classe Funcionário, com o nome de empregados.

quando você fez isso: Funcionario empregados = new Funcionario();

você criou uma variável local com nome de empregados, da classe Funcionário, mas sem ser uma array! Então, tira isso: Funcionario empregados = new Funcionario(); e testa.

E claro, falta você colocar o número de posições da array, como o Cesar falou acima: Funcionario[] empregados = new Funcionario[5];

É verdade Davi, não observei que faltava o operador de atribuição "=". Valeu!

Obrigado pela ajuda Cesar e Davi!