Fiz um programinha q gera algumas expressões, le dados e as grava em um arquivo
até ai tudo bem, meu programa funciona numa boa
Mas o problema é q eu fiz tudo em um método só
fazendo com q o metodo ficasse um pouco extenso
Queria q alguém me ajudasse a dividir esse método em outros 3 mais ou menos,
pois ja tentei e ñ obitive muito sucesso
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
public class Programa {
public static void LeeCalc() throws Exception {
File file = new File("entrada.txt");
PrintWriter escrever = new PrintWriter(new FileWriter("saida.txt"));
Pilha p = new Pilha();
Pilha Paux = new Pilha();
Fila f = new Fila();
String termo = " ";
String aux = " ";
String id = " ";
try {
FileReader reader = new FileReader(file);
BufferedReader buffer = new BufferedReader(reader);
StreamTokenizer st = new StreamTokenizer(buffer);
st.resetSyntax();
st.whitespaceChars(0,' ');
st.wordChars(' '+1, 255);
st.nextToken();
termo = st.sval;
//QUERIA QUE UM METODO FOSSE O Q ESTA DENTRO DESTE IF
if (termo.equals("I")){
id = "P ";
st.nextToken();
while(st.ttype != StreamTokenizer.TT_EOF){
termo = st.sval;
if((termo.equals("/"))||(termo.equals("*"))||(termo.equals("!"))
||(termo.equals("pow"))||(termo.equals("+"))||(termo.equals("-"))
||(termo.equals("("))||(termo.equals(")"))){
if (p.vazia()){
p.inserir(termo);
}
else if((termo.equals("+"))||(termo.equals("-"))){
if( p.retornaTopo().equals("/")||p.retornaTopo().equals("*")
||p.retornaTopo().equals("!")||p.retornaTopo().equals("pow")){
while(!p.vazia()){
Paux.inserir(p.remover());
}
Paux.inserir(termo);
while(!Paux.vazia()){
p.inserir(Paux.remover());
}
}
else{
p.inserir(termo);
}
}
else if((termo.equals("*"))||(termo.equals("/"))){//verifica se o termo lido atual é "*" ou "/"
if((p.retornaTopo().equals("!"))||(p.retornaTopo().equals("pow"))){
while(!p.vazia()){ // se for desvazia a pilha e coloca numa auxiliar
Paux.inserir(p.remover()); // logo depois volta para a pilha inicial
}
Paux.inserir(termo);// verifica se o topo.seguinte é pow ou fatorial
while(!Paux.vazia()){
p.inserir(Paux.remover());
}
}
else{
p.inserir(termo);
}
}
else if((termo.equals("!"))||(termo.equals("pow"))){// verifica se o termo lido atual é
p.inserir(termo); // fatorial ou potencia e insere o termo no topo da pilha.
st.nextToken();
}
else{
p.inserir(termo);
}
// --------------------------------fim da verificação deoperadores.
}
else if ((!termo.equals("/")) && (!termo.equals("*")) && (!termo.equals("!"))
&& (!termo.equals("pow")) && (!termo.equals("+")) && (!termo.equals("-"))
&& (!termo.equals("(")) && (!termo.equals(")"))) {
f.inserir(termo);
}
st.nextToken();
}
}
// QUERIA QUE UM METODO FOSSE O Q ESTA DENTRO DESTE ESLSE IF
else if (termo.equals("P")){
id = "I ";
String op1,op2,concatena;
op1 = op2 = concatena = " ";
st.nextToken();
while(st.ttype != StreamTokenizer.TT_EOF){
termo = st.sval;
if(p.vazia()){
p.inserir(termo);
}
else if(termo.equals("!")){
op1 = p.remover();
concatena = "( " + op1 + " " +termo + " )";
p.inserir(concatena);
}
else if((termo.equals("/"))||(termo.equals("*"))||(termo.equals("pow"))
||(termo.equals("+"))||(termo.equals("-"))){
op1 = p.remover();
op2 = p.remover();
concatena = "( " + op2 + " " +termo + " " + op1 + " )";
p.inserir(concatena);
}
else if ((!termo.equals("/")) && (!termo.equals("*")) && (!termo.equals("!"))
&& (!termo.equals("pow")) && (!termo.equals("+")) && (!termo.equals("-"))
&& (!termo.equals("(")) && (!termo.equals(")"))) {
p.inserir(termo);
}
else{
p.inserir(termo);
}
st.nextToken();
}
}
}//FIM ELSE IF
catch (IOException e) {
e.printStackTrace();
}
String resultado = " ";
while(!p.vazia()){
f.inserir(p.remover());
}
while(!f.vazia()){
String x = " ";
x = f.remover();
if((!x.equals("(")) && (!x.equals(")"))){
resultado += " " + x;
}
}
escrever.print(id);
escrever.println(resultado.trim());
escrever.close();
}
// ----------------------------------------------------------------------------------------
public static void main(String[] args) throws Exception {
LeeCalc();
}
}
Valeu, esse forum é 10