2013-12-21 88 views
0

我正在尝试计算中缀表达式,例如4 *(2 + 3)-1。我使用脚本引擎管理器。它在控制台应用程序上工作,但是当我在我的JFrame上使用它时,当我点击equals按钮时会出现错误。中缀表达式评估错误

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。字符串

回答

1

的错误是什么错误消息告诉你:
一个Double不能转换为String

在此行中:result.setText((String) res),你应该尝试result.setText(res)其中隐含调用result.setText(res.toString()),你可能想看看圆滑,DoubleFloat没有100%的准确率。