У меня вопрос о моем методе, который должен оценивать префиксные выражения. Я получил это, чтобы работать для сообщений, фиксирующих выражения, используя стеки, поэтому я решил, что он должен быть схожим. Мне нужно читать справа налево, а не слева направо. Вот мой метод оценки, любые предложения или указатели больш были бы оценены:Префикс Оценка выражения (с использованием стеков) -Java
// evaluates a preFix expression
public static int evaluate(String input)
{
int number, leftOperand, rightOperand, result;
char operator;
String token;
// create an integer stack
Stack<Integer> stack = new Stack<Integer>();
// create string tokenizer containing string input
StringTokenizer tokenizer = new StringTokenizer(input);
// while input string has more tokens
while (tokenizer.hasMoreTokens()) {
token = tokenizer.nextToken();// get next token
// if token is character
if (isChar(token)) {
number = Integer.parseInt(token);// push into stack
stack.push(number);
// if token is operator
} else {
operator = token.charAt(0);// get operator
rightOperand = stack.pop();// pop two numbers
leftOperand = stack.pop();
result = evaluate(rightOperand, leftOperand, operator);// evaluate
stack.push(result);// push result
}
}
return stack.pop();// final answer
Исключение:
Exception in thread "main" java.lang.NumberFormatException: For input string: "-"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:572)
at java.lang.Integer.parseInt(Integer.java:615)
at PrefixEvaluator.evaluate(PrefixEvaluator.java:40)
at PrefixEvaluator.main(PrefixEvaluator.java:99)
хорошо ... вы пробовали свою идею (чтение назад)? это сработало? – Dima
Да, я пробовал это, и это дало мне ошибку. – ExecutionStyle21
И если кто-то хочет увидеть мой полный код, чтобы подробно спросить, я хочу быть предельно ясным. – ExecutionStyle21