我正在尝试计算中缀表达式,例如 4*(2+3)-1。我使用脚本引擎管理器。它适用于控制台应用程序,但当我在 JFrame 上使用它时,单击等于按钮时出现错误。
private void equalsActionPerformed(java.awt.event.ActionEvent evt) {
Object res = null;
try {
res = new ScriptEngineManager().getEngineByName("JavaScript").eval(display1.getText());
} catch (ScriptException ex) {
Logger.getLogger(InfixCalculator.class.getName()).log(Level.SEVERE, null, ex);
}
result.setText((String) res);
}
display1 显示中缀表达式,如下屏幕截图所示。
错误如下:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.String
最佳答案
该错误正是错误消息告诉您的内容:
Double
无法转换为 String
。
在这一行:result.setText((String) res)
,您应该尝试result.setText(res)
,它隐式调用result.setText( res.toString())
,并且您可能需要查看舍入,因为 Double
和 Float
没有 100% 的精度。
关于java - 中缀表达式计算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20719255/