Ajuda com arrays

[code]class Empresa {
String nome;
String cnpj;
Trabalhador[] trabalhadores;

void mostra(){
	System.out.println("Empresa:"+this.nome);
	System.out.println("cnpj:"+this.cnpj);
}
void adiciona(Trabalhador t){
	Trabalhador trabalhadores=t;
	System.out.println("Funcionário:"+trabalhadores.funcionario);
	System.out.println("RG:"+trabalhadores.rg);
	System.out.println("Salário:R$"+trabalhadores.salario);
}

}

class Trabalhador{
String funcionario;
String rg;
double salario;
}

class EmpresaTeste{
public static void main(String[] args){
Empresa empresa=new Empresa();
empresa.nome=“JUNINHO ANDRADE lmtd”;
empresa.cnpj=“64656543”;
empresa.mostra();
System.out.print("\n");

	empresa.trabalhadores=new Trabalhador[10];
	
	Trabalhador t1=new Trabalhador();
	t1.funcionario="José Messias de Andrade";
	t1.rg="5654654564";
	t1.salario=1200.00;
	
	Trabalhador t2=new Trabalhador();
	t2.funcionario="Valdete Aparecida Perreira Andrade";
	t2.rg="94654546";
	t2.salario=350.00;
	
	Trabalhador t3=new Trabalhador();
	t3.funcionario="José Messias de Andrade Júnior";
	t3.rg="454656656";
	t3.salario=585.65;
	
	empresa.trabalhadores[0]=t1;
	empresa.trabalhadores[5]=t2;
	empresa.trabalhadores[8]=t3;
	
	empresa.adiciona(t1);
	System.out.print("\n");
	empresa.adiciona(t2);
	System.out.print("\n");
	empresa.adiciona(t3);
}

}
[/code]
Olá, fiz esse código mas gostaria de saber como faço quando for adicionar um novo trabalhador para procurar uma posição vazia ou guardar um contador para indicar a próxima posição vazia.
Obrigado.

Faz uma rotina que iteraja no array e verifique se naquela posição o elemento é igual a null (Todo elemento de um array de referência se não inicializado é null), se for, adicione o próximo elemento naquela posição!!

Fica mais ou menos assim:

public void addElemento(Tipo objeto){ for (int cont = 0; cont<array.length; cont++){ if (array[cont] == null){ array[cont] = objeto; break; } } }

Espero ter ajudado!!

e cria uma variável estática(ou uma variavel da classe) para guardar o numero de funcionarios q a foi adicionado…

entao completano o código acima…vc pode fazer

public void addElemento(Tipo objeto){
for (int cont = 0; cont<array.length; cont++){
if (array[cont] == null){
array[cont] = objeto;
break;
contador += 1;
}
}
}

Se não for isso, alguém me corrija pls :smiley:

Nao seria mais interessante vc utilizar ArrayList ou Vector?

Se eu nao me engano… vetores nao podem ser redimensionados sem perder seus elementos… Usando ArrayList ou Vector seu codigo ficaria mais dinamico… podendo aumentar/diminuir sem maiores problemas…

Corrijam-me se eu estiver errado…
Espero ter ajudado…

Nadilson :wink:

Entao…ArrayList é sim muit bom…mas é interessante tomar cuidado com esse dinamismo, pois o que acontece quando uma arraylist é dinamicamente aumentada é a mesma coisa que acontece quando uma Array é aumentada na mão.Ou seja, é criada uma nova array, que tem o conteudo atual copiado e o se tamanho dobrado para acomodar os novos itens. A differença é que isso acontece no “backstage”, o usuario nao precisa se preocupar.

Resumindo a melhor coisa é planejar o tamanho de suas lista com antecendência para não consumir memória a toa. :wink: