Galera preciso de uma classe para leitura de arquivos, onde o arquivo deverá ter extensão .dat, ja criei o codigo mais preciso apenas da leitura do arquivo para testá-lo. O codigo é um somador de bits.
Segue o codigo:
for(int j = 0;j<n.length;j++){
if(!(n[j].equals("00"))&&!(n[j].equals("01"))&&!(n[j].equals("10"))&&!(n[j].equals("11")))
erro++;
}
if(erro>0){
ps.println("Expressão Invalida");
ps.println("");
ps.println("");
continue;
}
//--------------------------------------------------------
i = -1;
S0();//Chamando funcao para inicio do automato
//--------------------------------------------------------
//imprimindo no arquivo de saida
String[] separa = new String[2];
for(int j=1;j<=2;j++){
for(int i=0;i<n.length;i++){
separa = n[i].split("");
ps.print(""+separa[j]);
}ps.println("");
}
ps.println("-----------------");
for(int i = saida.size()-1 ; i >= 0 ; i-- )
ps.print(""+saida.get(i));
// ps.println("");
//
ps.print(" que é igual a ");
decimal = 0;
for(int i = saida.size()-1 ; i >= 0 ; i-- ){
ps.print(""+saida.get(i)+"x2^"+i+" + ");
decimal += Integer.parseInt(""+saida.get(i)) * Math.pow(2,i);
}
ps.println(" = "+decimal);
ps.println("");
ps.println("");
//Limpando lista de saida
for(int i = saida.size()-1 ; i >= 0 ; i-- )
saida.remove(i);
}
//Fechando arquivos
s.close();
ps.close();
}
//Metodo que representa o estado S0
public static void S0(){
i++;
if(i == n.length){//se chegou ao final
saida.add(0);
return;
}
if (n[i].equals("00")){
saida.add(0);
S0();
}else if(n[i].equals("01") || n[i].equals("10")){
saida.add(1);
S1();
}else if(n[i].equals("11")){
saida.add(0);
S2();
}
}
//Metodo que representa o estado S1
public static void S1(){
i++;
if(i == n.length){//se chegou ao final
saida.add(0);
return;
}
if (n[i].equals("00")){
saida.add(0);
S0();
}else if(n[i].equals("01") || n[i].equals("10")){
saida.add(1);
S1();
}else if(n[i].equals("11")){
saida.add(0);
S2();
}
}
//Metodo que representa o estado S2
public static void S2(){
i++;
if(i == n.length){//se chegou ao final
saida.add(1);
return;
}
if (n[i].equals("00")){
saida.add(1);
S1();
}else if(n[i].equals("01") || n[i].equals("10")){
saida.add(0);
S2();
}else if(n[i].equals("11")){
saida.add(1);
S3();
}
}
//Metodo que representa o estado S3
public static void S3(){
i++;
if(i == n.length){//se chegou ao final
saida.add(1);
return;
}
if (n[i].equals("00")){
saida.add(1);
S1();
}else if(n[i].equals("01") || n[i].equals("10")){
saida.add(0);
S2();
}else if(n[i].equals("11")){
saida.add(1);
S3();
}
}
}[/b]