Ola,
estou construindo um jogo de tabuleiro que é uma lista duplamente encadeada os textos das casas deste tabuleiro(cada nó da lista)eu tenho que ler de um arquivo e inserir nas casas certas de acordo com o arquivo.Cada no da lista(casa do jogo é um objeto do tipo casa).
O problema é que eu não to conseguindo inserir o conteudo do texto do arquivo na lista
Alguém poderia me ajudar a encontrar o erro?obg
Meu codigo é o seguinte:
[code]import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Random;
public class ExecutaJogo {
public static void main(String[] args) {
//criando um objeto do tipo JogoTabuleiro
JogoTabuleiro jogo=new JogoTabuleiro();
//criando variaveis auxiliares
int quantidadeDeCasas=0,posicao = 0,posicao1=0;
String pos,pos1;
//enquanto a quantidade de casas for menor ou igual a 42(tamanho do tabuleiro que foi diponibilizado)
while(quantidadeDeCasas<=42)
{
//eu insiro casas neste tabuleiro
jogo.insereCasa(new Casa());
//incremento meu contador
quantidadeDeCasas++;
}
try
{
//crio um arquivo que contem as ações de algumas casas do tabuleiro
FileReader fr = new FileReader("tabuleiro.txt");
//crio um buffer e uma String para a leitura
BufferedReader in = new BufferedReader(fr);
String line = in.readLine();
//enquanto a linha do arquivo não for vazia
while(line!=null)
{
//inserindo as ações do arquivo nas casas do tabuleiro
String separada[]=line.split("-");
pos=separada[0];
posicao=Integer.parseInt(pos);
jogo.insereAcao(posicao, separada[1]);
//pos1=separada[2];
//posicao1=Integer.parseInt(pos1);
//jogo.insereAcao(posicao1, separada[3]);
//jogo.tabuleiro.print();
line = in.readLine();
}
in.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
[/code]
Algum erro?
Exception?
Ele roda e não faz nada?
Oi drsmachado,
Ocorre nullpointerexception!
Quando eu coloco um system para exibir os conteudos da lista parece que entra em loop pq fica rodando e não para de exibir o conteudo das listas tipo pela logica deveria aparecer 43 mas aparece muito mais!
E isso não é tudo pois quando eu exibo o texto das casas da lista só a primeira casas esta com o texto lido do arquivo as demais ficam com o valor padrao nenhuma que foi definido no construtor da classe Casa
obrigada
Paty, posta o stacktrace do erro, ele irá referenciar uma linha com o nullpointer, aponte no código qual a linha onde o erro acontece, ok?
o printstacktrace()exibe o seguinte:
java.lang.NullPointerException
at JogoTabuleiro.joga(JogoTabuleiro.java:101)
at ExecutaJogo.main(ExecutaJogo.java:105)
A linha 101 é cur.getPrevious().getElement().setJogador1(null);
da classe Jogo Tabuleiro e a 105 é da classe Executa Jogo jogo.joga(j1, valorDoDado);
.
O código do método joga é o seguinte:
[code]public void joga(Jogador j, int valorDado)
{
//crio um objeto do tipo Random()
Random r = new Random();
//crio um contador
int contador=0;
//joga o dado
valorDado = r.nextInt(6) + 1;
DNodecur=tabuleiro.head;
// move o jogador
while(contador<=valorDado)
{
//se o contador for igual ao valor sorteado
if(contador==valorDado)
{
cur.getElement().getJogador1();
//seta para null a posição anterior!!!
cur.getPrevious().getElement().setJogador1(null);
//lê a ação da nova casa,a qual o jogador pertence no momento
if(cur.getElement().getAcao()!=null){
//executo a ação descrita na casa
}
}
contador++;
}
[/code]
Obrigada
Bom, provavelmente o atributo Element, do objeto cur.getPrevious() não está instanciado.
Você precisa, quando criar um cur, setar
cur.getPrevious().setEkement(new Element);
Hmm
Não sei drsmachado
pensei q estava fazendo isso com o seguinte DNode<Casa>cur=tabuleiro.head;
…
tu queres ver as outras classes?é q talvez eu não esteja sendo precisa na explicação
obrigada
É que pela mensagem de erro, ou cur ou Previous ou Element está nulo.
não sim eu te entendi e tb acho q o erro seja nesta parte do codigo e o q tu acha d eu tirar a parte que seta para null( cur.getPrevious().getElement().setJogador1(null);
) é q eu tinha feito assim pq no exercicio dizia q apos eu trocar um jogador de casa eu deveria star para null ele na casa onde ele estava antes
e tu sabe pq não estou inserindo os outros textos do arquivo nas casas?
obrigada