0
접두사 표현식을 평가할 내 방법에 대한 질문이 있습니다. 스택을 사용하는 포스트 픽스 (post fix) 표현식에서 작동하도록 했으므로 유사해야한다고 생각했습니다. 왼쪽에서 오른쪽으로 읽는 대신 오른쪽에서 왼쪽으로 읽어야합니다. 여기에 평가를위한 나의 방법이다, 어떤 제안이나 포인터는 크게 감상 할 수있다 :접두사 표현식 평가 (스택 사용) -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