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
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