2014-10-18 169 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