我是 java 新手,我正在尝试解决程序中可能出现的错误。我正在创建一个计算器并将输入从中缀转换为后缀以计算结果。我想尝试解决输入中不匹配的括号,但我遇到了麻烦。例如,当从中缀转换为后缀时,当到达 )
时,它将从堆栈中弹出数字并将它们放入新的后缀列表中。在一种情况下,可能不存在匹配的左括号(while 循环到达堆栈末尾而没有遇到 (
),它应该抛出异常。我已经实现了以下代码,但它似乎不起作用:
else if(tok.equals(")")){
while(stack.peek().equals("(") == false){
try{
Operator o = stack.pop();
nlist.add(o);
} catch(EmptyStackException e){
System.out.println(e.getMessage());
}
stack.pop();
}
然后在构建 GUI 并处理输入的另一个文件中,我输入:
try{
java.util.List<Token> postfix = ExpressionManager.infixToPostfix(infix);
// build the expression
Expression exp = ExpressionManager.buildExpression(postfix);
// display the results
}catch(ArithmeticException e){
entryField.setText(e.getMessage())
}
有什么建议吗?
最佳答案
stack.peek()
在进入 try-catch block 之前抛出 EmptyStackException
(我假设您期望 pop
会抛出异常)。
第二个 block 没有显示如何抛出ArithmeticException
,因此,不确定您在这里期望什么。
关于java - 如何正确抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32874895/