Java 在强制转换双精度时类强制转换异常

Java 在强制转换双精度时类强制转换异常,java,casting,double,joptionpane,Java,Casting,Double,Joptionpane,我试着运行以下代码。它编译,但抛出ClassCastException。如果有人能帮我找出原因,我会非常高兴 double costprice = 0; Object[] possibilities = null; costprice = (double) JOptionPane.showInputDialog( alphaPOS, "Cost Price:", "Enter

我试着运行以下代码。它编译,但抛出ClassCastException。如果有人能帮我找出原因,我会非常高兴

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

JOptionPane.showInputDialog()
返回一个不能转换为
double
对象(归功于@SeleenVirtuose),使用
double.parseDouble()
将字符串解析为double

costprice = Double.parseDouble(JOptionPane.showInputDialog(
                alphaPOS,
                "Cost Price:",
                "Enter Values",
                JOptionPane.PLAIN_MESSAGE,
                null,
                possibilities,
                ""));
而且,您可以在一条线上完成所有这些

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,
            ""));
另外,由于
可能性
变量为null,只需将
null
作为参数传递即可(除非您在其他地方更改了变量)


返回不能转换为双精度的对象。

使用的方法返回用户从提供的
对象[]
中选择的
对象。当然,它仍然不是一个
double
@Seelenvirtuose我的错误,我把它和另一个showInputDialog的变体混在一起了,它确实返回一个字符串。@ShifaTsar没问题!使用的方法返回用户从提供的
对象[]
中选择的
对象。当然,它仍然不是一个
double
@ShifaTsar如果你觉得我充分回答了你的问题,请将其标记为正确答案,以便人们知道你的问题已经得到了回答@请参阅在showInputDialog中,什么将返回双精度?@ShifaTsar您可以提供一个
对象[]
,其元素都是
double
s(包装类型)。在这种情况下,您可以将返回值强制转换为
Double
,并对其调用方法
doubleValue()
,以检索所需的
Double
costprice = Double.parseDouble(JOptionPane.showInputDialog(
                alphaPOS,
                "Cost Price:",
                "Enter Values",
                JOptionPane.PLAIN_MESSAGE,
                null,
                possibilities,
                ""));