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