Não consigo imprimir minha lista!

5 respostas
oitathi

oi pessoal, sou nova aqui e tenho uma duvida! Espero q me ajudem!!
Eu tenho um documento txt que é da seguinte forma:

3,
veiculos1
3326362
%%button2-Enter,sms enter
%%button1-Block,sms block
%%button1-Lock,sms lock
%%button2-Alarm,sms unlock
%%button1-Unblock,sms unblock
5318453
%%button2-Block,sms enter
%%button1-Enter,sms block
%%button1-Unlock,sms lock
%%button2-Lock,sms unlock
%%button1-Alarm,sms unblock
6518204
%%button2-Unlock,sms enter
%%button1-Lock,sms block
%%button1-Enter,sms lock
%%button2-Block,sms unlock
%%button1-Alarm,sms unblock

veiculos2
8502790
%%button2-Block,sms enter
%%button1-Enter,sms block
%%button1-Unlock,sms lock
%%button2-Lock,sms unlock
%%button1-Alarm,sms unblock
7720123
%%button2-Lock,sms enter
%%button1-Block,sms block
%%button1-Alarm,sms lock
%%button2-Unlock,sms unlock
%%button1-Enter,sms unblock

veiculos3
6740297
%%button2-Lock,sms enter
%%button1-Block,sms block
%%button1-Alarm,sms lock
%%button2-Unlock,sms unlock
%%button1-Enter,sms unblock
7544091
%%button2-Block,sms enter
%%button1-Enter,sms block
%%button1-Unlock,sms lock
%%button2-Lock,sms unlock
%%button1-Alarm,sms unblock

o numero 3 no inicio do arquivo, refere-se a quantidade de tipos de veiculos, que são três (veiculo1, veiculo2, e veiculo3). Cada um desses tipos possui n numeros de veiculos. Cada veiculo possui um id e 5 botões. Assim, o numero 3326362 refere-se a um id de um carro e as linhas:
%%button2-Enter,sms enter
%%button1-Block,sms block
%%button1-Lock,sms lock
%%button2-Alarm,sms unlock
%%button1-Unblock,sms unblock
referem-se aos botões. eu preciso criar tres listas. uma lista para cada tipo, e apartir de então, ir inserindo os veiculos na lista especifica que ele faz parte. Por exemplo, o veiculo de id 6740297, deve ser inserido na minha lista 3, e o meu veiculo de id 8502790, deve ser inserido na minha lista 2.
Para isso criei uma função q lê cada uma das minhas palavras do meu arquivo txt, delimitado por virulas.
A primrira palavra q o meu método lê eh o numero 3. A partir daí, criei um vetor com o tamanho 3 (que eh a minha qtd de tipos) e. Depois, peguei a próxima palavra do texto que é: veiculos1 e atribui a uma variavel do tipo inteiro chamada index o valor da substring(8)-1.
Depois, atribui a próxima palavra do texto a minha variavel id.
A proxima palavra do texto que é: %%button2-Enter, eu passo para uma função que descobre o enabled e o nome do meu botão. A proxima palavra do texto que é sms enter, eu guardo numa variavel chamada act. Faço isso para os meus 5 botões e para minhas 5 ações. Ao final disso, crio um novo objeto do tipo Definition e passo como parametro os id, os 5 botões e as 5 ações. Esse novo objeto que eu criei, eu insiro na posição index do meu vetor. Ou seja, criei um vetor de Listas e nessa lista eu tenho um metodo que insere objetos do ipo Definition. Faço isso até eof.
Porém, qdo vou testar meu método, para ver o q ele inseriu dah erro de ponteiroNulo. Eu sinceramente não sei onde está o erro, será q vcs poderiam me ajudar?
O codigo está abaixo. Obrigada! :)

[code]
public class DefiningMain {

public static void main(String[] args) {
DefiningMethod df = new DefiningMethod();
}
}

public class DefiningMethod {
List myList = new ArrayList();
Read reader = new Read();
JButton bt1, bt2, bt3, bt4, bt5;
String act1, act2, act3, act4, act5;
String id;
String resultado;
int qtdTipos;
int index;

public DefiningMethod(){
reader.openFile("C:\\Users\\Silvia\\Desktop\\demos txt\\botoesTeste.txt");
qtdTipos=Integer.parseInt(reader.readNextString(","));
Lista []tipos=new Lista[qtdTipos];
resultado=reader.readNextString("[\\s,]+");
while(resultado!=null){
if(resultado.startsWith("%%veiculos")){
index=Integer.parseInt(resultado.substring(8))-1;
id=reader.readNextString("[\\s,]+");
bt1=setButton(reader.readNextString("[\\s,]+"));
act1=reader.readNextString("[\\s,]+");
bt2=setButton(reader.readNextString("[\\s,]+"));
act2=reader.readNextString("[\\s,]+");
bt3=setButton(reader.readNextString("[\\s,]+"));
act3=reader.readNextString("[\\s,]+");
bt4=setButton(reader.readNextString("[\\s,]+"));
act4=reader.readNextString("[\\s,]+");
bt5=setButton(reader.readNextString("[\\s,]+"));
act5=reader.readNextString("[\\s,]+");
Definition df = new Definition(bt1,bt2,bt3,bt4,bt5,act1,act2,act3,act4,act5,id);
tipos[index].addLista(df);
}//end if
resultado=reader.readNextString("[\\s,]+");
}//end while
for(int i=0;i<5;i++){
tipos[i].imprimeLista();
}//end for
}//end construtor

public JButton setButton(String resultado){
JButton bt = new JButton();
String opButton, nameButton;
int op;
opButton=resultado.substring(8,9);
op=Integer.parseInt(opButton);
nameButton=resultado.substring(10);
switch(op){
case 0 :
bt.setVisible(false);
bt.setEnabled(false);
break;
case 1 :
bt.setVisible(true);
bt.setEnabled(false);
break;
case 2 :
bt.setVisible(true);
bt.setEnabled(true);
break;
}//end switch
bt.setText(nameButton);
return bt;
}//end metodo
}//end class

public class Definition {

private JButton bt1,bt2,bt3,bt4,bt5;
private String act1, act2, act3, act4, act5;
private String id;

public Definition(JButton bt1, JButton bt2, JButton bt3, JButton bt4,JButton bt5,
String act1, String act2, String act3, String act4, String act5, String id){
this.bt1=bt1;
this.bt2=bt2;
this.bt3=bt3;
this.bt4=bt4;
this.bt5=bt5;
this.act1=act1;
this.act2=act2;
this.act3=act3;
this.act4=act4;
this.act5=act5;
this.id=id;
}//end contrutor
}//end class

public class Lista {

LinkedList lista = new LinkedList();

public void addLista(String id){
lista.add(id);
Collections.sort(lista);

}//end metodo

public void addLista(Definition df){
lista.add(df);

}//end metodo

public boolean find(String chave){
int result;
result=Collections.binarySearch(lista,chave);
if(result>=0){
return true;
}
else{
return false;
}
}

public void imprimeLista(){
Iterator it = lista.iterator();
while(it.hasNext()){
String temp = (String)it.next();

System.out.println(temp+" ");
}//end while
}//end metodo
}

public class Read {

private RandomAccessFile arquivo;
private long tamanho;
private String[] Palavras;
private int palavra = 0;

public void openFile(String path) {
try {
arquivo = new RandomAccessFile(path, "r");
arquivo.seek(tamanho);
tamanho = arquivo.length();
}// end try
catch (FileNotFoundException fnfe) {
System.out.println(fnfe.getMessage());
}// end
catch (IOException ioe) {
System.out.println(ioe.getMessage());
}// end catch
}// end class

public String readNextString(String delimiter) {
String tmp;
if (palavra == 0)
try {
tmp =arquivo.readLine();
if (tmp == null)
return null;
tmp = tmp.trim();
Palavras = tmp.split(delimiter);
}
catch (IOException ioe) {
return null;
}
tmp = Palavras[palavra++];
if (palavra == Palavras.length) {
palavra = 0;
} // end if

return tmp;
}

public void closeFile() {
try {
arquivo.close();
} catch (IOException ioe) {
System.out.println(ioe.getMessage());
ioe.printStackTrace();
}//end catch
}//end metodo

public String getPalavra(int i){
return Palavras[i];
}

public int getNumPalvras(){

return Palavras.length;
}

public String readPalavra(int i){
return Palavras[i];
}

public void goToNextLine(){
palavra=0;
}

}// end class

5 Respostas

julianofischer

Regras do Fórum: http://www.guj.com.br/posts/list/21516.java

Antes de perguntar: http://www.guj.com.br/posts/list/15477.java

oitathi

julianofischer:
Regras do Fórum: http://www.guj.com.br/posts/list/21516.java

Antes de perguntar: http://www.guj.com.br/posts/list/15477.java


Pense numa coisa: muito ajuda quem não atrapalha amigo! Fica a sua se não sabe a resposta

ViniGodoy
oitathi:
Pense numa coisa: muito ajuda quem não atrapalha amigo! Fica a sua se não sabe a resposta

Por favor, seja mais específica na sua dúvida.

1. Poste só os trechos de código relevantes. E use a tag code:
[code]
Seu código
[/code]

2. Se o código for muito grande, use a opção de attachments. Ela está logo abaixo da caixa de textos onde vc escreve o texto do tópico.

3. O erro de nullpointer vem com uma stack trace, dizendo exatamente a linha em que o erro se encontra. Destaque em seu código que linha é essa e onde o erro ocorre.

4. Procure usar o depurador. Esse tipo de erro ele pega fácil.

julianofischer

Oitathi, disposição e educação não é o seu forte né?

ViniGodoy

Vamos parar os dois? Juliano, sua resposta não foi também a das mais educadas. E a colega também reagiu mau ao comentário.
Mas vamos parar por aqui.

Criado 5 de julho de 2010
Ultima resposta 6 de jul. de 2010
Respostas 5
Participantes 3