NullPointerException

2 respostas
J
public void Cruzamento(Individuo[]populacao){
		int indice = 6;
		for (int i =0; i<6; i = i+2){
			int []aux = new int[36];
			int []aux1 = new int[36];
			int []individuoNovo = new int [36];
			int []individuoNovo1 = new int [36];
			aux = populacao[i].genotipo;
			aux1 = populacao[1+1].genotipo;
			Cruzar1 (aux,aux1, individuoNovo);
			Cruzar2(aux, aux1, individuoNovo1);
			populacao[indice].genotipo = individuoNovo;
			indice++;
			populacao[indice].genotipo = individuoNovo1;
			indice++;
		}
	}	

	private void Cruzar1(int []aux, int[]aux1, int[]individuoNovo) {
		for (int j = 0; j<12; j++){
			individuoNovo[j]= aux[j];
		}
		for (int j = 12; j<24; j++){
			individuoNovo[j]= aux1[j];
		}
		for (int j = 24; j<36; j++){
			individuoNovo[j]= aux[j];
		}
	}
	private void Cruzar2(int []aux, int[]aux1, int[]individuoNovo) {
		for (int j = 0; j<12; j++){
			individuoNovo[j]= aux1[j];
		}
		for (int j = 12; j<24; j++){
			individuoNovo[j]= aux[j];
		}
		for (int j = 24; j<36; j++){
			individuoNovo[j]= aux1[j];
		}
	}
Quando executo o método acima ocorre um erro de NullPointerException. O método recebe por parâmetro um vetor de 12 posições sendo que 6 delas estão ocupadas e as restantes serão ocupadas a partir do cruzamento dos elementos já existentes.

2 Respostas

fabiozoroastro

Olá Juliana, pelo que entendi, o erro ocorre na linha 12. Isso porque se o seu vetor passado por parâmetro só tem seis posições preenchidas(0 a 5).
Quando você faz:

populacao[indice].genotipo = individuoNovo;

Você está acessando um valor null no seu vetor. Daí quando você “chama” o atributo genotipo, ele lança a NullPointerException…
Debugue e veja se é isso mesmo. :slight_smile:

Até mais!

J

Foi isso mesmo.

Criado 12 de novembro de 2009
Ultima resposta 12 de nov. de 2009
Respostas 2
Participantes 2