Итак, мне нужно прочитать постфиксное выражение из файла. В постфиксном выражении должны быть пробелы для разделения каждого оператора или операнда. То, что у меня есть, пока работает только в том случае, если во входном файле нет пробелов между операторами или операндами. (т. е. если файл имеет 12+, я получаю результат 3.) Чтобы сделать это, я думаю, что мне нужно токенизировать ввод, но я не уверен, как это сделать. Это то, что у меня есть до сих пор. Спасибо за любые ответы.
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);
}
}
StringTokenizer
. По умолчанию он токенизирует пробелы (пробелы, табуляции, новые строки и т. д.). - person Brian   schedule 04.09.2012