2014-10-18 167 views
-2

我試着運行下面的代碼。它編譯,但拋出一個ClassCastException。如果有人能幫我弄清楚爲什麼,我會很高興。鑄造異常時鑄造雙

double costprice = 0; 
Object[] possibilities = null; 
costprice = (double) JOptionPane.showInputDialog(
        alphaPOS, 
        "Cost Price:", 
        "Enter Values", 
        JOptionPane.PLAIN_MESSAGE, 
        null, 
        possibilities, 
        ""); 

回答

6

JOptionPane.showInputDialog()返回Object(學分@SeleenVirtuose),其不能被轉換爲double,使用Double.parseDouble()解析字符串爲double。

costprice = Double.parseDouble(JOptionPane.showInputDialog(
       alphaPOS, 
       "Cost Price:", 
       "Enter Values", 
       JOptionPane.PLAIN_MESSAGE, 
       null, 
       possibilities, 
       "")); 

此外,可以將所有的這在一行

當你在聲明double變量,然後設置直線距離,你還不如申報,並在同一行分配新值

double costprice = Double.parseDouble(JOptionPane.showInputDialog(
      alphaPOS, 
      "Cost Price:", 
      "Enter Values", 
      JOptionPane.PLAIN_MESSAGE, 
      null, 
      possibilities, 
      "")); 

此外,由於possibilities變量爲空,只是通過null作爲參數(除非你已經改變了可變別處)

double costprice = Double.parseDouble(JOptionPane.showInputDialog(
      alphaPOS, 
      "Cost Price:", 
      "Enter Values", 
      JOptionPane.PLAIN_MESSAGE, 
      null, 
      nulll, 
      "")); 
+0

謝謝SOO多:) – Tsar 2014-10-18 07:58:33

+0

@ShifaTsar沒問題! – SamTebbs33 2014-10-18 07:59:26

+1

使用的方法返回一個用戶從提供的Object []中選擇的Object。它仍然是 - 當然 - 不是'雙'。 – Seelenvirtuose 2014-10-18 07:59:32

2

JOptionPane.showInputDialog返回一個Object,它不能轉換爲double。

+0

用過的方法返回一個'Object',用戶從提供的Object []中選擇。它仍然是 - 當然 - 不是'雙'。 – Seelenvirtuose 2014-10-18 07:58:37

+0

@Seelenvirtuose我的錯誤,我把它與showInputDialog的另一個變體混合在一起,它返回一個String。 – Eran 2014-10-18 08:01:40