我正在尝试计算中缀表达式,例如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显示中缀表达式,如下面的屏幕截图所示。
错误如下:
线程“AWT-EventQueue-0”中的异常java.lang.ClassCastException: java.lang.Double无法强制转换为java.lang.String
答案 0 :(得分:1)
错误正是错误消息告诉您的:
Double
无法转换为String
。
在这一行:result.setText((String) res)
,你应该尝试result.setText(res)
隐含地调用result.setText(res.toString())
,你可能想看看舍入为Double
和{{1没有100%的精度。