Preciso muito de ajuda, alguem online?

16 respostas
L

Pessoal, tenho um trabalho pra entregar na quarta, é um jogo da velha, em java muito básico…
OO ainda por cima, bagunçando a cabeça.

Eu tenho uma classe tabuleiro, e criei um, porém estou tendo problemas com o null pointer exception e não sei como crio a instancia do objeto…

o código da declaração:

tabuleiro tab = new tabuleiro(3, 3);

o código do construtor:

public tabuleiro(int l, int c){

linha = l;
    coluna = c;
    linha0 = new Peca[c];
    linha1 = new Peca[c];
    linha2 = new Peca[c];

}

16 Respostas

Z

Bom, um null pointer é um dos erros mais simples de se resolver, pis é facil detectar o ponto.

Olhe na exception em qual linha está dando o nullpointer, ou rode sua aplicação em modo debug e coloque um breaking point para vc ir acompanhando.

Bons estudos.

L

sim, eu fiz o debug…
Mas não sei se é a cabeça que tá ruim mas não consigo achar o problema.
No caso eu declarei o tabuleiro, e declarei os vetores, mas parece que o tabuleiro em si não existe, a instancia, e eu nao consigo achar um meio de criar, eu usei o método do construtor mas mesmo assim, parece que o tabuleiro em si não foi criado…

JARDEL_RODRIGUES

atenção, quando criar tópico crie de acordo com erro que está acontecendo no seu codigo.

Z

lolitosa:
sim, eu fiz o debug…
Mas não sei se é a cabeça que tá ruim mas não consigo achar o problema.
No caso eu declarei o tabuleiro, e declarei os vetores, mas parece que o tabuleiro em si não existe, a instancia, e eu nao consigo achar um meio de criar, eu usei o método do construtor mas mesmo assim, parece que o tabuleiro em si não foi criado…

Sem codigo de erro fica complicado te ajudar,
Cola ai o erro e tua classe na integra usando as tags code ai de cima.

L

Exception in thread "main" java.lang.NullPointerException
at jogodavelha2.tabuleiro.print(tabuleiro.java:82)
at jogodavelha2.Jogodavelha2.main(Jogodavelha2.java:29)
Java Result: 1

public static void main(String[] args) {
        
        Peca p1 = new Peca("X");
        Peca p2 = new Peca("O");
        tabuleiro tab = new tabuleiro(3, 3);
        tab.setPeca(1, 2, p2);
        JOptionPane.showMessageDialog(null, tab.print());
        
        
    }
public class tabuleiro {
    
    private int linha;
    private int coluna;
    private Peca[] linha0;
    private Peca[] linha1;
    private Peca[] linha2;
    
    public tabuleiro(int l, int c){
    
        linha = l;
        coluna = c;
        linha0 = new Peca[c];
        linha1 = new Peca[c];
        linha2 = new Peca[c];
    
    }
    
    public boolean setPeca(int l, int c, Peca p){
        
       boolean retorno = false;
       if(l == 1) {
        linha0[c-1] = p;
        retorno = true;
       }
       if(l == 2) {
        linha1[c-1] = p;
        retorno = true;
       }
        if(l == 3) {
        linha2[c-1] = p;
        retorno = true;
        }
        
       return retorno;
     
    }
    
    public Peca getPeca(int l, int c){
    
       Peca peca = null; 
       if(l == 1) {
        peca = linha0[c-1];
       }
       if(l == 2) {
        peca = linha1[c-1];
       }
       if(l == 3) {
        peca = linha2[c-1];   
       }
       
       return peca;
    
    }
    
    public String getError(){
    
        String errormessage = "";
        errormessage.equals("Erro. O tabuleiro não deve ter mais de 9 espaços.");
        
        return errormessage;
    
    }

   public String print() {
   
       String temp = "";
       int c = 0;
       this.coluna = c;
       
         for (c = 1; c <= 3; c++) {
             if (linha0[c-1].equals("")) {
                temp = temp + c;
             } else{
                temp = temp + linha0[c-1]; 
             } 
             
             if((c==1)||(c==2)) {
                 temp = temp + "|";
             } else{
                 temp = temp + "\n";
             }
             
        }
         
  return temp;

}
Hebert_Coelho

Não tenha medo de ler uma mensagem de erro.

A sua mensagem de erro diz:

Exception in thread “main” java.lang.NullPointerException
at jogodavelha2.tabuleiro.print(tabuleiro.java:82) <==================

Note que ele aponta onde está o erro e em qual arquivo.

Abra seu arquivo tabuleiro na linha 82 (que não é a mesma que você colou aqui) e veja o que está null.

L

Ah, está dando .equals() em tipos incompatíveis...
Como posso resolver isso?
no caso, eu tenho uma classe peça que guarda uma string dentro.
pra imprimir o tabuleiro, fiz a função usando equals.
ps: o meu professor passou a base dessa parte do código na sala de aula...

public String print() {
   
       String temp = "";
       int c = 1;
       this.coluna = c;
       
         for (c = 1; c <= 3; c++) {
             if (linha0[c-1].equals("")) {
                temp = temp + c;
             }
R

Nao seria porque voce quer comparar um objeto PECA com uma STRING, que sao 2 tipos diferentes ?

L

sim, mas dentro da peça tem uma string…

no caso, linha0[0] é uma peça, mas corresponde a “X”, por exemplo…

Eu preciso da comparação para desenhar o tabuleiro, como posso resolver isso?

R

Mostre sua classe Peca.

L

opa opa opa
descobri o erro!
colei aqui e veio uma luz na cabeça ahahaa
era só colocar linha0[c-1].getTipo()

public class Peca {
    
    
    private String tipo;
    
    public Peca(String t){
    tipo = t;
    }
    
    public String getTipo(){
    
    return tipo;
    }
    
    public void setTipo(String tipo1){
    
    tipo = tipo1;
    }
    
}
L

engraçado que continua dando erro na mesma linha naquela parte do null pointer exception, mas o erro de comparação de tipos sumiu

R

Estranho, no construtor da sua classe Peca voce passa como parametro uma String, mas na inicializacao da linha0 voce da um new Peca(c), mas c é um tipo int, 2 tipos diferentes certo ?

[code]
public tabuleiro(int l, int c){

linha = l;
coluna = c;
linha0 = new Peca[c];
linha1 = new Peca[c];
linha2 = new Peca[c];

}
[quote]

L

sim, pois no caso, o tabuleiro é um vetor de peças.
Não estou mexendo com matriz então tenho 3 vetores (linhas) então fica algo como linha0[c] e no caso c é o numero de colunas.

charleston10

é fácim fazer,
tenho pronto tbm

http://javaaberto.blogspot.com.br/search/label/Codigo%20Fonte%20SE

Obs.: Nao entregue esse, apenas estude o codigo fonte e implemente no seu trabalho…

L

mas ainda nao consigo entender fontes assim, meu java é bem básico…

Criado 19 de janeiro de 2013
Ultima resposta 19 de jan. de 2013
Respostas 16
Participantes 6