NullPointerException altentar executar um metodo

4 respostas
G

Ola pessoal esta dano erro quando pesso para executar um metodo vou colocar as duas Classes a que chama e a classe q tem o metodo blz

Vlw quem puder me ajudar.

[color=red]Classe que chama o metodo[/color]
public class Jogo {

	public static void main(String[] args) {
	
		SuperHeroi superHeroi = new SuperHeroi("Homem-Aranha","Peter Park");
	    Vilao vilao = new Vilao("Duende Verde","Norman Osbourne",4);
	    
	    SuperPoder superPoderH = new SuperPoder("Soltar teia",3);
	    SuperPoder superPoderV = new SuperPoder("Força",5);
	    Confronto confronto = new Confronto();
	    
	    superHeroi.adicionaSuperPoder(superPoderH);
	    vilao.adicionaSuperPoder(superPoderV);
	    
	    int resultado=confronto.executar(superHeroi, vilao);
	    
	    if(resultado==1)
	    {
	    	System.out.println("Homem-Aranha ganhouuu!!!");
	    }
	    else if(resultado==2)
	    {
	    	System.out.println("Ouve empate na luta!!!");
	    }
	    
	    else
	    	System.out.println("O Duende Verde ganhouuu!!!");
	    

	}

}

[color=red]
Classe q tem o metodo[/color]

public class Personagem {
	
	private String nome;
	private String nomeVidaReal;
	private SuperPoder[] poderes = new SuperPoder[4];
	
	
	public Personagem(String nome, String nomeVidaReal)
	{
		this.nome = nome;
		this.nomeVidaReal = nomeVidaReal;
	}
	
	public void adicionaSuperPoder(SuperPoder sp)
	{
		for(int i=0; i<poderes.length; i++)
		{	if(poderes[i].equals(null))// o erro da nessa linha
			{
				poderes[i]=sp;
                                                                 break;
			}	
			
		}
	}
	
	public int getPoderTotal()
	{
		int total=0;
		
		for(int i=0; i < poderes.length; i++)
		{
			total +=poderes[i].getCategoria(); 
		}	
		
		return total;
	}
	
	

}

[color=red]O Erro[/color]

Exception in thread "main" java.lang.NullPointerException
	at Personagem.adicionaSuperPoder(Personagem.java:18)
	at Jogo.main(Jogo.java:13)

4 Respostas

henriqueluz

Você tá criando o array de objetos SuperPoder, e quando você cria o array eles vêm nulos.
Você precisa instanciar cada elemento do array usando:

poderes[i] = new SuperPoder();

abraços,

G

vlw mas eu pensei q ( == ) ia comparar o endereço de memoria e nao o valor que é null

jose_castilho

Caro amigo,

Analisei vosso problema e gostaria de enviar meus comentários.
Primeiramente, vosso array poderes terá todos os valores nulos, sendo assim quando vosso código poderes[i] executa, o resultado é null e ao tentar invocar o método equals a partir de uma referencia nula, a jvm lança NullPointerException.

Para não correr o risco de ter exception e manter a mesma lógica que você implementou basta inverter a forma como efetuou o teste de nulidade, como segue:

if( null == poderes[i]) //desta forma você não terá uma NullPointerException lançada pela JVM.

Espero ter ajudado a entender o porque de vosso problema.

Quaisquer dúvidas estou à disposição.

Att.

José Antônio Castilho Fernandes
SCEA 5, SCBCD 5, SCWCD 5, SCJD 5, SCJP
DataSun - Acelerando Carreiras
www.datasun.com.br/treinamentos

henriqueluz

Eu dei uma editada no texto porque o motivo do seu erro era outro.

Da uma olhada ae!

Criado 21 de julho de 2011
Ultima resposta 22 de jul. de 2011
Respostas 4
Participantes 3