Porque dá esse erro?
Não estou conseguindo entender…
[quote]Exception in thread “main” java.lang.NullPointerException
at Baralho.geraBaralho(Baralho.java:12)
at Jogo.main(Jogo.java:5)[/quote]
Classe Jogo
[code]
public class Jogo {
public static void main(String[] args){
Baralho novo = new Baralho();
novo.geraBaralho();
}
}[/code]
Classe Cartas
[code]public class Cartas {
private int valor; //Valor de compargação das cartas
private String numero; //Numeração da carta
private String naipe; //Naipe das cartas
private String imagem; //Campo para armazenar link da imagem
/**
* @return the valor
*/
public int getValor() {
return valor;
}
/**
* @param valor the valor to set
*/
public void setValor(int valor) {
this.valor = valor;
}
/**
* @return the numero
*/
public String getNumero() {
return numero;
}
/**
* @param numero the numero to set
*/
public void setNumero(String numero) {
this.numero = numero;
}
/**
* @return the naipe
*/
public String getNaipe() {
return naipe;
}
/**
* @param naipe the naipe to set
*/
public void setNaipe(String naipe) {
this.naipe = naipe;
}
/**
* @return the imagem
*/
public String getImagem() {
return imagem;
}
/**
* @param imagem the imagem to set
*/
public void setImagem(String imagem) {
this.imagem = imagem;
}
}[/code]
Classe Baralho
[code]public class Baralho {
//cria vetor do baralho
Cartas[] monte;
public void geraBaralho() {
//determina quantidade de posicoes do baralho
monte = new Cartas[40];
//4 de espada
monte[0].setValor(0);
monte[0].setNumero("4");
monte[0].setNaipe("Espada");
monte[0].setImagem("4_espada");
System.out.println(monte[0].getValor());
}
}[/code]
Você declarar um array, não quer dizer que as variáveis nos índices estão instanciadas, até você instanciá-las, elas serão nulas.
faltou dar um new em Cartas, assim:[code]monte = new Cartas[40];
//4 de espada
monte[0] = new Cartas();
monte[0].setValor(0);
monte[0].setNumero(“4”);
monte[0].setNaipe(“Espada”);
monte[0].setImagem(“4_espada”); [/code]
É, isso.
Aqui:
//4 de espada
monte[0].setValor(0);
monte[0].setNumero("4");
monte[0].setNaipe("Espada");
monte[0].setImagem("4_espada");
Você está setando as variáveis de um objeto que não existe na memória. =]
Rapaz, pra mim era suficiente iniciar assim: monte = new Cartas[40]; e não sabia que tinha que instanciar cada espaço do array depois. Já testei aqui e deu certo, muito obrigado a todos : digaoneves, michelorth_92 e linngallo
Muitos problemas com array, mas dessa vez deu esse erro de NullPointerException na linha do aleatorio. Por que?
Estou me desanimando muito por causa disso. =(
[quote]Exception in thread “main” java.lang.NullPointerException
at Partida.(Partida.java:28 )[/quote]
import java.util.Random;
/**
*
* @author bruno
*/
public class Partida {
Cartas[] embaralhado;
Cartas[] j1;
Cartas[] j2;
Cartas[] j3;
Cartas[] j4;
Random aleatorio;
Cartas temporario;
int posicao = 0;
public Partida() {
Baralho jogo = new Baralho();
embaralhado = new Cartas[40];
j1 = new Cartas[3];
j2 = new Cartas[3];
j3 = new Cartas[3];
j4 = new Cartas[3];
//gera baralho com cartas aleatorias
for (int i = 0; i < 40; i++) {
posicao = aleatorio.nextInt(40);
temporario = new Cartas();
temporario = jogo.monte[i];
embaralhado[i] = jogo.monte[posicao];
embaralhado[posicao] = temporario;
}
//distribui valores para jogador 1
for (int i = 0; i < 3; i++){
j1[i]=embaralhado[i];
}
//distribui valores para jogador 2
for (int i = 3; i < 6; i++){
j2[i]=embaralhado[i];
}
//distribui valores para jogador 3
for (int i = 6; i < 9; i++){
j3[i]=embaralhado[i];
}
//distribui valores para jogador 4
for (int i = 9; i < 12; i++){
j4[i]=embaralhado[i];
}
}
}
Precisa instanciar o Random.
caramaba c ta com serios problemas com instanciação de objetos…
posicao = aleatorio.nextInt(40);
falta instanciar aleatorio