Verificar se aray está cheio

Pessoal,

Pesquisei no fórum e achei um tópico mas não entendi muito bem as soluções dadas, são conceitos que ainda não conheço.

Tenho seguinte código:

[code]public class Empresa {

String nome, cnpj;
Funcionario[] empregados = new Funcionario[10];
int i;


void adicionar(Funcionario f,int i){
	if (this.empregados[i] == null) {
		this.empregados[i] = f;						
	} else {
		System.out.println("Array cheio");
	}
	
}
void mostraArray (){
	for (Funcionario x : empregados){
		if (x != null){
			System.out.println(x.salario);
		} 	
	}
}

boolean contem(Funcionario f) {
	if (f.demitido == false){
		System.out.println("Funcionário ainda da empresa");
		return true;
	} else {
		System.out.println("Funcionário não esta empresa");
		return false;
	}
	
}

}[/code]

No método adicionar, preciso fazer uma verificação se o array está cheio, mas a solução que eu adotei me pareceu um pouco de gabiarra rs. Por que isso só funciona se a adição de valores no array for indo do 0 ao 9 direitinho, mas se antes disso eu adicionar um valor em uma posição aleatório, a solução não irá servir.

Alguém pode me ajudar por favor?

Não tem muito sentido esse método de verificar se o array tá cheio.
Porque ele faz somente verificar se a posição é nula .

Uma alternativa era fazer um for ( (Funcionario x : empregados) para verificar se existe alguma posição null. dai se tiver ele insere na primeira que tiver e fim do for . caso contrário ele dá aquela mensagem de cheio.

for (int i=0 ; i<= empregados.length; i++)
{

if (this.empregados[i] == null) {
this.empregados[i] = f;

} else …

Ah perdão, o que acontece é que a chamda do adicionar() estava dentro de um for em outra classe.

Assim ó:

[code]public class TestaEmpresa {

public static void main(String[] args) {

	Empresa a = new Empresa ();

	Funcionario b = new Funcionario();
	b.salario = 2000.0;
	a.empregados[2] = b;

	for (int i = 0; i < 5; i++) {
		Funcionario f = new Funcionario();
		f.salario = 1000.0 + i;
		a.adicionar(f,i);
		//f.demite();
		a.contem(f);
	}

}
}[/code]

De qualquer forma, assim ele vai verificar posição por posição sequencial (verifica posição 0, verifica posição 1, verifica posição 2 e assim vai…)

Queria verificar tudo sem precisar ser sequencial pq como eu disse, se eu adicionar em alguma momento algum registro na posição 5 e depois em um for adicionar a posição 1, essa solução não vai funcionar (deu pra entender? rs)

Acho q não vai funcionar mesmo, já que vc poderá excluir alguém e esta posição ficará vazia, daí como resolver isso??

São esses problemas que eu não consegui solucionar.

E o que vc quer fazer ???

ACho que vc deveria tirar o loop do programa e colocá-lo no método diretamente.

fica mais ou menos assim:

void adiciona(Funcionario f,int i){

for (int i = 0 , i<empregados.length ; i++)

{
if (empregados[i]==null ) {
empregados[i] = f ;
return;
}

} 

System.out.println(“Array cheio”);

}

Cada vez que ele achar um null ele insere nessa posição e depois termina o método , se ele não achar nenhuma posição vazia, dá mensagem de array cheio , só que dessa vez no final do método.

Acho que vou seguir a sua sugestã, pelo menos a aplicação estará funcionando.