我有一个方法可以将表达式从其中缀表示法转换为后缀表示法,但我不知道如何处理大于9的数字。
例如, 如果我有12-(5 + 3)我不希望它被表达为1253 + - 而是12 53 + - (或类似形式)。
我有什么:
private void postfix(){
String result = "";
LinkedStack<Character> stack = new LinkedStack<Character>();
for (int i = 0; i < expression.length(); i++){
char c = expression.charAt(i);
if (Character.isDigit(c)){
result += c;
}
else if (c == '('){
stack.push(c);
}
else if (c == ')'){
while (!stack.isEmpty() && stack.peek() != '('){
result += stack.pop();
}
if (!stack.isEmpty() && stack.peek() != '('){
result = "Invalid Expression";
}
else{
stack.pop();
}
}
else if(isOperator(c)){
while (!stack.isEmpty() && weight(c) <= weight(stack.peek()))
result += stack.pop();
stack.push(c);
}
}
postfixed = result;
}
答案 0 :(得分:1)
您需要修改代码的这一部分:
if (Character.isDigit(c)){
result += c;
}
如果表达式为“1234”,您只需计算1 + 2 + 3 + 4而不是将1234视为单个数字。
您可以做的是将连续数字收集到String
。然后,使用Integer.parseInt()