Dúvidas em utlização de array

4 respostas
swing

Olá pessoal, estou tentando fazer um exercício com array e não consigo, o exercício é o seguinte:

Ir até ao sistema Funcionario e crie uma classe Empresa. A Empresa tem
um nome, cnpj e uma array de Funcionario.
A empresa deve ter um método adiciona que recebe uma referência a
Funcionario como argumento, e guarda esse funcionario.
Você deve inserir o Funcionario em uma posição da array que esteja livre.

Fiz o seguinte:

class Funcionario {
	String nome;
	String dept;
	double salario;
	Data dataDeEntrada;
	String rg;
	boolean ativo = true;
	
	void bonifica(double valor){
		salario += valor;
	}
	
	void demite(){
		ativo = false;
	}
	
	void mostra(){
		System.out.println("Nome: " + this.nome);
		System.out.println("Salário: " + this.salario);
		System.out.println("Data: " + this.dataDeEntrada.dia + 
				                "/" + this.dataDeEntrada.mes + 
				                "/" + this.dataDeEntrada.ano);
	}
}


class TestaFuncionario {

	public static void main(String[] args) {
		
		Empresa func = new Empresa();
		func.funcionarios[0].nome = "Carla";
		func.funcionarios[0].salario = 1000;
		
		func.adiciona();
		func.mostra();
	}
}


class Empresa {
	  String nome;
	  String cnpj;
	  Funcionario[] funcionarios;
	
	void adiciona(){
		for(int i=0; i<10; i++){
			new Funcionario();
		}
	}
	
	void mostra(){
		System.out.println("Nome: " + this.funcionarios[0].nome);
		System.out.println("Salário " + this.funcionarios[0].salario);
	}
}

sei que está errado, mas não consigo encontrar o erro.

4 Respostas

bcartaxo

O método adiciona deve receber um FUncionario como argumento. Para manter seus dados aconselho q vc use um atributo int na classe empresa q fará o controle do prósimo índice do array a ser usado. O seu me´todo adiciona n está fazendo nd. Ele entra em um loop, a cada iteração instancia um objeto Funcionario e perde essa referência, ao fim nd foi feito =P

faz isso. Cria um atributo int proximaPosicao e boto no construotr pra começar com 0, daí qd for adicionar um Funcionario vc manda adicionar no array na posição proximaPosicao, e logo em seguida incrementa a variável proxima posicao.

D

Vamos devagar…

Tente pensar nas duas classes…

Funcionario -&gt com nome, idade… etc
Empresa -&gt com nome e array de funcionário…

Atualmente, seu adiciona está assim:

void adiciona(){
 		for(int i=0; i&lt10; i++){
 			new Funcionario();
 		}
 	}

Não entendi o propósito deste for ai… você mesmo disse que o adiciona irá receber uma referencia a um funcionário… portanto:

void adiciona(Funcionário f){
 		arrFuncionario[i] = f;
 	}

Desta forma, vc está atribuindo o funcionário que vc criou, ao array de funcionários que a empresa possui…

Para que você possa controlar em qual índice você irá "guardar" esse funcionário, você precisará de uma variável estática! Ela é um "atributo" pertinente a classe, e não ao objeto criado… ficaria algo mais ou menos assim…

class Empresa{
     private String nome;
     private arrFuncionario[] funcionarios;
     private static int i = 0;
     
...
...
...

 	void adiciona(Funcionário f){
 		arrFuncionario[i] = f;
                                i++; //Adiciona 1 ao contador de funcionarios!
 	}

}

Tente novamente! =)

Qquer coisa poste sua duvida =)

[]'s
Du

swing

nesse caso quem seria “arrFuncionario”?

swing

Valew pelas dicas Du, consegui desenrolar graças suas explicações.

Criado 25 de maio de 2007
Ultima resposta 28 de mai. de 2007
Respostas 4
Participantes 3