我正在尝试将一个中缀转换为postfix转换器但是我输出时遇到了一些问题,即带括号。当我尝试用括号传递任何东西时,请说:
(1*2*3^1)
我收到NoSuchElementException。谁知道什么是错的?
一些注意事项:我正在传递令牌化字符串的deque作为中缀(所以我只限于deque方法)并返回后缀的String deque。任何帮助表示赞赏。
这是我的方法:
private static Deque<String>shuntingYard(Deque<String> infixQ){
Deque<String> opS = new LinkedList<String>();
Deque<String> outputQ = new LinkedList<String>();
String token;
while(!infixQ.isEmpty()){
token = infixQ.removeFirst();
if(isNumeric(token) || isAlpha(token)){
outputQ.addLast(token);
}
if(token.equals("(")){
opS.addFirst(token);
}
if(token.equals(")")){
opS.addFirst(token);
while(!outputQ.peekFirst().equals("(")){
outputQ.addLast(opS.removeFirst());
}
opS.removeFirst();
}
if(isOperator(token)){
while(!opS.isEmpty() && !(opS.peekFirst().equals("(") && prec(token) <= prec(opS.peekFirst()))){
outputQ.addLast(opS.removeFirst());
}
opS.addFirst(token);
}
}
while(!opS.isEmpty()){
outputQ.addLast(opS.removeFirst());
}
return outputQ;
}