java - 中缀表达式计算错误

标签 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

错误如下:

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()),并且您可能需要查看舍入,因为 DoubleFloat 没有 100% 的精度。

关于java - 中缀表达式计算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20719255/

相关文章:

java - 如何在 JAXB 中指定对象引用数据类型

java - 为什么用ConfirmDialog关闭Frme窗口会在两种情况下(确定和取消)关闭?

c# - 如何使用文本框、进度条和性能计数器的值进行计算? C#

javascript计算从生日算起的生存天数

java - 使用 jdbcAuthentication 时 Spring Security 登录不工作

java - 字符串到 Integer 和 int 的转换

java - 为什么缓冲区大小对此文件读取操作没有影响

Java,JFrame : getWidth() returns 0

java - 无法让我的程序等待,导致我的白屏! java

javascript - 如果用户不包括整个正整数,如何创建只接受正整数并给出错误的评分计算器