Postfix Calculatrice Java

Ok, donc je dois lire dans un postfix expression à partir d'un fichier. Le suffixe d'expression doit avoir des espaces pour séparer chaque opérateur ou de l'opérande. Ce que j'ai pour l'instant fonctionne uniquement si il n'y a pas d'espaces entre les opérateurs ou les opérandes dans le fichier d'entrée. (c'est à dire si le fichier a 12+ le résultat que j'obtiens est 3.) Pour ce faire, je pense que j'ai besoin pour marquer l'entrée, mais je ne suis pas sûr de savoir comment. C'est ce que j'ai jusqu'à présent. Merci pour toutes les réponses.

import java.util.*;
import java.io.*;
public class PostfixCalc{
public static void main (String [] args) throws Exception {
File file = new File("in.txt");
Scanner sc = new Scanner(file);
String input = sc.next();
Stack<Integer> calc = new Stack<Integer>();
while(sc.hasNext()){
for(int i = 0; i < input.length(); i++){
char c = input.charAt(i);
int x = 0;
int y = 0;
int r = 0;
if(Character.isDigit(c)){
int t = Character.getNumericValue(c);
calc.push(t);
}
else if(c == '+'){
x = calc.pop();
y = calc.pop();
r = x+y;
calc.push(r);
}
else if(c == '-'){
x = calc.pop();
y = calc.pop();
r = x-y;
calc.push(r);
}
else if(c == '*'){
x = calc.pop();
y = calc.pop();
r = x*y;
calc.push(r);
}
else if(c == '/'){
x = calc.pop();
y = calc.pop();
r = x/y;
calc.push(r);
}
}
}
int a = calc.pop();
System.out.println(a);
}
} 
Jetez un oeil à StringTokenizer. Il tokenizes sur les espaces blancs (espaces, tabulations, retours à la ligne, etc.) par défaut.

OriginalL'auteur Jmamz06 | 2012-09-04