Então pessoal, o que eu tenho que fazer é pegar um arquivo .txt e ler uns elementos especificos igorando partes da entrada.
tipo assim:
s0 -- a/0 -> s1
s0 -- b/1 -> s2
s1 -- a/0 -> s2
s1 -- b/0 -> s1
s2 -- a/1 -> s0
s2 -- b/0 -> s1
public static class Transicao{
public String inicial;
public char entrada;
public char saida;
public String proximo;
}
Em que cada um representa uma posição da linha.
criei uma lista para armazenar as linhas desses dados em separado:ArrayList<Transicao> Lista = new ArrayList<Transicao>();
tran = new Transicao();
if(cont == 6){
temp = new Transicao();
temp = tran;
Lista.add(temp);
}
Acontece que no final da interação, toda a lista fica preenchida igual, com o ultimo elemento
Estado inicial = s2 Entrada = b Saida = 0 Estado Final = s1
Estado inicial = s2 Entrada = b Saida = 0 Estado Final = s1
Estado inicial = s2 Entrada = b Saida = 0 Estado Final = s1
Estado inicial = s2 Entrada = b Saida = 0 Estado Final = s1
Estado inicial = s2 Entrada = b Saida = 0 Estado Final = s1
Estado inicial = s2 Entrada = b Saida = 0 Estado Final = s1
sendo que o correto seria assim:
Estado inicial = s0 Entrada = a Saida = 0 Estado Final = s1
Estado inicial = s0 Entrada = b Saida = 1 Estado Final = s2
Estado inicial = s1 Entrada = a Saida = 0 Estado Final = s2
Estado inicial = s1 Entrada = b Saida = 0 Estado Final = s1
Estado inicial = s2 Entrada = a Saida = 1 Estado Final = s0
Estado inicial = s2 Entrada = b Saida = 0 Estado Final = s1
Já tentei de tudo, e depurando percebi que toda vez que o objeto é alterado todos os elementos da lista ficam são alterados juntos.
Alguma idéia?
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package metodow_bpt;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
/**
*
* @author thadeu-afm
*/
public class Main {
public static class Transicao{
public String inicial;
public char entrada;
public char saida;
public String proximo;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws FileNotFoundException, IOException {
//if(args.length<=0){
// System.out.println("No input file");
// System.exit(0);
// }
//String namefile;
//namefile = args[1];
Transicao tran;
Transicao test;
Transicao temp;
FileReader fr = new FileReader("fsm.txt");
int ch, cont= 0;
cont=0;
String p = "";
ArrayList<Transicao> Lista = new ArrayList<Transicao>();
tran = new Transicao();
do {
ch = fr.read();
if(ch != '\n'){
if((ch !=' ')&&(ch !='-')&&(ch != '/')&&(ch != '>')){
p = p + (char)ch;
if(cont == 1){
tran.inicial = p;
p = "";
}
if(cont == 2){
tran.entrada = (char)ch;
p = "";
}
if(cont == 3){
tran.saida = (char)ch;
p = "";
}
if(cont == 5 ){
tran.proximo = p;
p = "";
}
if(cont == 6){
temp = new Transicao();
temp = tran;
Lista.add(temp);
System.out.println("Estado inicial = " + tran.inicial + " Entrada = " + tran.entrada + " Saida = " + tran.saida + " Estado Final = " + tran.proximo);
}
cont++;
}
}
if((ch == '\n')||(ch == -1)){
cont = 0;
}
} while (ch != -1);
fr.close();
int i;
for(i = 0; i < Lista.size(); i++){
test = new Transicao();
test = Lista.get(i);
//System.out.println(i);
System.out.println("Estado inicial = " + test.inicial + " Entrada = " + test.entrada + " Saida = " + test.saida + " Estado Final = " + test.proximo);
}
}
}