2013-12-21 89 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%的準確率。