我有一個問題,我在這個函數中找不到錯誤,它有時候對一些輸入做得很好,但是有時候對於這個輸入來說沒有任何問題,這個輸入「6 2/3 - 4 2 * +」可以是任何一個幫幫我。在java中評估後綴表達式
public static double Evaluating_postfix_expressions(String postfix) throws Exception{
StringTokenizer st = new StringTokenizer(postfix);
int numOF_tokens = st.countTokens();
for (int i = 1; i <= numOF_tokens; i++) {
Object term = st.nextToken();
try { // if it is an operand there is no problem
float x = Float.parseFloat((String)term);
stack.push(x);
} catch (Exception e) { // it is an operator
float v1 = (float) stack.pop();
float v2 = (float) stack.pop();
switch ((String) term) {
case "+":
stack.push(v2 + v1);
break;
case "-":
stack.push(v2 - v1);
break;
case "*":
stack.push(v2 * v1);
break;
case "/":
stack.push(v2/v1);
break;
}
}
}
return (float) stack.pop();
}
它對'1 2 +'之類的東西有用嗎? – sarnold
應該做的功能是什麼? – Hassan
'$'不是一個有效的操作符,但它會被異常抓住。運行你的代碼,並追蹤它,看看它實際上在做什麼。 – Makoto