Java.lang.NullPointerException (dúvidas de iniciante) - Resolvido

4 respostas
L

Estou fazendo o começo de um projeto de um baralho de truco.Que, por enquanto, tem 2 classes : Cartas e Baralho.
O código não aparece erro,mas quando eu vou compilar aparece :

Exception in thread "main" java.lang.NullPointerException
at Baralho.inicializa(Baralho.java:28)
at Truco.main(Truco.java:11)

O Código está aqui

Classa Cartas

public class Cartas {
	int numero;
	/*as cartas serão representadas por números,a seguir a carta e o seu respectivo número
	 * A = 1, 2 = 2, 3 = 3, 4 = 4, 5 = 5 ,6 = 6, 7 = 7, Q = 8, J = 9, K = 10
	 * */
	
	int naipe;
	/*os naipes serão repreentados por n;umeros,a seguir o naipe e o seu respectivo número
	 * Ouros = 1,Espadas = 2 ,Copas = 3, Paus = 4
	 */
}

Classe Baralho


import java.util.Arrays;
import java.util.Collections;


public class Baralho {
	
	
	int topo;
	
	
	Cartas[] baralho = new Cartas[40];
	
	
	/*baralho começa com a carta 0 e vai até a carta 39,cada carta dada
	 * é o topo movendo*/
	
	
	/* numero de cartas no baralho*/

	
	/*coloca as cartas no baralho*/
	public void inicializa (){
		int i;
		int j;
		
		for(i = 1; i < 11; i++){
			for (j = 1; j < 5; j++){
				baralho[((i-1)*10 + (j-1))].naipe = j;
				baralho[((i-1)*10 + (j-1))].numero = i;
			}
		}
		
		this.topo = 0;
		
	}
	
	/*função que embaralha o baralho*/
	public void embaralha (){
		Collections.shuffle(Arrays.asList(baralho));
		
	}
	
	public void darCarta (){
		System.out.println("Carta: " +baralho[topo].numero+ " Naipe: " +baralho[topo].naipe+ "\n" );
		this.topo = this.topo + 1;
		
		
	}

}

E o main:


public class Truco {
	

	
	public static void main (String[] args) {
		
		Baralho truco = new Baralho();
		
		/*inicialzia o baralho*/
		truco.inicializa();
		
		/*embaralha o baralho*/
		truco.embaralha();
		
		/*da a primeira carta*/
		truco.darCarta();
		
		/*da a segunda carta*/
		truco.darCarta();
		
		/*da a terceira carta*/
		truco.darCarta();
		
		
		
		
		
	}

}

Se algúem poder me ajudar,eu agradeço.

4 Respostas

ViniGodoy

Dessa vez corrigi o post para você, mas da próxima siga essas dicas:

Senão fica difícil enxergar seu código.

ViniGodoy

O seu problema é que faltou criar as cartas do baralho. A declaração:

Cartas[] baralho = new Cartas[40];

Cria um array vazio, sem cartas dentro.

Para corrigir, troque esse for:

for(i = 1; i < 11; i++){ for (j = 1; j < 5; j++){ baralho[((i-1)*10 + (j-1))].naipe = j; baralho[((i-1)*10 + (j-1))].numero = i; } }
Por:

for(i = 1; i < 11; i++){  
      for (j = 1; j < 5; j++){  
         //Cria e configura a carta
         Carta carta = new Carta();
         carta.naipe = j;
         carta.numero = i;
         //Atribui ela ao array
         baralho[((i-1)*10 + (j-1))] = carta;
      }  
   }
L

Blz,de certo aqui =)
Corrigido.

ViniGodoy

Agora que vi que não era necessário fazer a atribuição duas vezes. Corrigi no meu código ali em cima.

Criado 30 de abril de 2011
Ultima resposta 30 de abr. de 2011
Respostas 4
Participantes 2