问题:(编译原理)将中缀表达式转换成三元式,但是一直出现这样的错误,不知道应该怎么改正
出现的问题是这样的:
具体是在这一行的这句话:
完整代码如下:
package llll;
import java.util.*;
public class InfixToTernary {
public static int precedence(char ch) {
switch (ch) {
case '+':
case '-':
return 1;
case '*':
case '/':
return 2;
case '^':
return 3;
}
return -1;
}
public static String infixToTernary(String expression) {
String result = "";
Stack<Character> stack = new Stack<>();
int count = 1;
for (int i = 0; i < expression.length(); i++) {
char ch = expression.charAt(i);
if (Character.isLetterOrDigit(ch)) {
result += ch;
} else if (ch == '(') {
stack.push(ch);
} else if (ch == ')') {
while (!stack.isEmpty() && stack.peek() != '(') {
result += stack.pop();
}
if (!stack.isEmpty() && stack.peek() != '(') {
return "Invalid Expression";
} else {
stack.pop();
}
} else {
while (!stack.isEmpty() && precedence(ch) <= precedence(stack.peek())) {
char op = stack.pop();
result += "t" + count + " = " + stack.pop() + " " + op + " " + stack.pop() + "\n";
stack.push((char) ('t' + count));
count++;
}
stack.push(ch);
}
}
while (!stack.isEmpty()) {
char op = stack.pop();
result += "t" + count + " = " + stack.pop() + " " + op + " " + stack.pop() + "\n";
stack.push((char) ('t' + count));
count++;
}
return result;
}
public static void main(String[] args) {
String s="3+5*6";
System.out.println(infixToTernary(s));
}
}