中缀表达式评估错误

时间:2013-12-21 12:58:18

标签: java jframe calculator

我正在尝试计算中缀表达式,例如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显示中缀表达式,如下面的屏幕截图所示。

enter image description here

错误如下:

  

线程“AWT-EventQueue-0”中的异常java.lang.ClassCastException:   java.lang.Double无法强制转换为java.lang.String

1 个答案:

答案 0 :(得分:1)

错误正是错误消息告诉您的:
Double无法转换为String

在这一行:result.setText((String) res),你应该尝试result.setText(res)隐含地调用result.setText(res.toString()),你可能想看看舍入为Double和{{1没有100%的精度。