NullPointer ao tentar criar um baralho

Galera, estou tentando criar um baralho em Java, mas ao tentar setar as cartas inicialmente, estou recebendo o famoso NullPointerException !

Segue as classes:

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package Classes;

/**
*

  • @author Leonardo
    */
    public class Cartas {

    private int valorCarta;
    private char naipe;
    private boolean eManilha;
    private boolean selecionada;

    public Cartas() {
    setCarta(-1,‘x’);
    setManilha(false);
    }

    public void setCarta(int v, char n){
    this.valorCarta = v;
    this.naipe = n;
    }

    public void getCarta(int v, char n){
    System.out.print(v+""+n);
    }

    public boolean isManilha() {
    return eManilha;
    }

    public void setManilha(boolean eManilha) {
    this.eManilha = eManilha;
    }

    public char getNaipe() {
    return naipe;
    }

    public void setNaipe(char naipe) {
    this.naipe = naipe;
    }

    public boolean isSelecionada() {
    return selecionada;
    }

    public void setSelecionada(boolean selecionada) {
    this.selecionada = selecionada;
    }

    public int getValorCarta() {
    return valorCarta;
    }

    public void setValorCarta(int valorCarta) {
    this.valorCarta = valorCarta;
    }

}
[/code]

Baralho (a que da erro):

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package Classes;

/**
*

  • @author Leonardo
    */
    public class Baralho {

    private Cartas[][] baralho;
    private Cartas vira;

    public Baralho() {
    baralho = new Cartas[4][10]; //inicia o baralho com 4 naipes e 10 valores
    // 0 - paus, 1 - copas, 2 - espada, 3 - ouros(pica)
    for (int naipe = 0; naipe < 4; naipe++) {
    for (int valores = 0; valores < 10; valores++) {
    char naip = setNaipe(naipe);
    baralho[naipe][valores].setCarta(naipe, naip);
    }
    }
    }

    private char setNaipe(int i) {
    char n = ’ ';
    switch (i) {
    case 0:
    n = ‘P’;
    break;
    case 1:
    n = ‘C’;
    break;
    case 2:
    n = ‘E’;
    break;
    case 3:
    n = ‘O’;
    break;
    }
    return n;
    }

    public void geraVira() {
    char naipe = setNaipe((int) Math.random() * 4);
    int carta = (int) Math.random() * 10;

     vira.setCarta(carta, naipe);
     vira.setManilha(false);
     vira.setSelecionada(true);
    

    }
    }
    [/code]

No caso, ele esta dando erro nessa linha : [color=green]baralho[naipe][valores].setCarta(naipe, naip); [/color]
Erro:
[color=red]Exception in thread “main” java.lang.NullPointerException
at Classes.Baralho.(Baralho.java:22)
at jogocarta.Main.main(Main.java:21)
Java Result: 1[/color]

Lembrando que na main apenas chamei Baralho b = new Baralho();

Mto obrigado !

debuga pra ver onde tah o erro…

Não, ta certo… é carta na vdd, so q eu pus o nome de baralho…

vlw pela ajuda de qlq jeito !

 baralho[naipe][valores].setCarta(naipe, naip);

essa linha não teria que receber valores no primeiro parâmetro de setCarta?
ficando assim

 baralho[naipe][valores].setCarta(valores, naip);

mas acredito que o NullPointerException não seja por esse motivo

Bem observado amigo ! Mas como vc disse, o erro persiste :frowning: !

Obrigado !

Olá,

O problema é que o elemento do vetor baralho está null.

Acrescente a linha:

baralho[naipe][valores] = new Cartas();

O código ficaria assim:

     public Baralho() {  
         baralho = new Cartas[4][10]; //inicia o baralho com 4 naipes e 10 valores  
         // 0 - paus, 1 - copas, 2 - espada, 3 - ouros(pica)  
         for (int naipe = 0; naipe < 4; naipe++) {  
             for (int valores = 0; valores < 10; valores++) {  
                 char naip = setNaipe(naipe);  
                 baralho[naipe][valores] = new Cartas();
                 baralho[naipe][valores].setCarta(naipe, naip);  
             }  
         }  
     } 

Até mais.

Não deu mais o erro, testarei mais tarde para ver se está rodando !

De qualquer jeito muito obrigado a todos !

Realmente funcionou ! Muito obrigado a todos novamente pela ajuda !

P.S. Depois de ler um artigo aqui no GUJ decidi mudar minha matriz de bi pra unidimensional, para melhorar o desempenho !

Sempre aprendendo :smiley: