java分区:找到的不可转换类型:int

java分区:找到的不可转换类型:int,java,math,division,Java,Math,Division,这个代码怎么了 int numOfPrimes=pf.FindNumPrimes(10000); Double frequency=((Double)numOfPrimes)/10000d; 说 找到不可转换的类型:int 必需:java.lang.Double 频率=((双)numoPrimes)/10000d 不要从原语强制转换为包装器类型。使用小写双精度。在这种情况下,您不需要任何强制转换,编译器会自动执行。上述内容可简化为: int numOfPrimes = ...; double

这个代码怎么了

int numOfPrimes=pf.FindNumPrimes(10000);
Double frequency=((Double)numOfPrimes)/10000d;

找到不可转换的类型:int 必需:java.lang.Double 频率=((双)numoPrimes)/10000d


不要从原语强制转换为包装器类型。使用小写
双精度
。在这种情况下,您不需要任何强制转换,编译器会自动执行。上述内容可简化为:

int numOfPrimes = ...;
double frequency = numOfPrimes / 10000d;

您几乎不应该将原语与包装器混合使用。并且总是喜欢原语(如果可能的话)。如果需要,请使用
Double.valueOf(..)
进行转换。

您试图将
int
自动装箱到
Double
对象,这是无效的

尝试:


Double
不是基本类型(如int、long、byte等)。这是一种班级类型。您可以使用自动装箱在double和double之间进行转换,但不能在
int
double
之间进行转换

您应该将
numOfPrimes
声明为
double
,或者对
double
而不是
double
进行强制转换

double numOfPrimes=pf.FindNumPrimes(10000);
Double frequency=((Double)numOfPrimes)/10000d;

或没有不必要的浇铸:

double numOfPrimes = pf.FindNumPrimes(10000);
Double frequency= numOfPrimes /10000d;


这是一些不必要的演员阵容,从技术上讲是这样的。有时,我更喜欢明确表达意图(在2的情况下)。在第一个版本中,我只是懒惰:)。这是一个不必要的演员阵容和以后不必要的拳击。
int numOfPrimes=pf.FindNumPrimes(10000);
Double frequency=((double)numOfPrimes)/10000d;
double numOfPrimes = pf.FindNumPrimes(10000);
Double frequency= numOfPrimes /10000d;
int numOfPrimes = 10;
Double frequency = numOfPrimes /10000d;