此代码有什么问题
int numOfPrimes=pf.FindNumPrimes(10000);
Double frequency=((Double)numOfPrimes)/10000d;
说
发现了不可转换的类型:int required:java.lang.Double Double 频率=((双)numOfPrimes)/ 10000D;
答案 0 :(得分:4)
不要从基元转换为包装类型。使用小写double
。在这种情况下,您不需要任何转换 - 编译器会自动执行此操作。以上内容可以简化为:
int numOfPrimes = ...;
double frequency = numOfPrimes / 10000d;
你几乎不应该将原语和包装器混合在一起。并且总是喜欢原语(如果可能的话)。如果需要,请使用Double.valueOf(..)
进行转换。
答案 1 :(得分:4)
您正试图将int
自动装箱到Double
对象,该对象无效。
尝试:
int numOfPrimes=pf.FindNumPrimes(10000);
Double frequency=((double)numOfPrimes)/10000d;
答案 2 :(得分:3)
Double
不是基本类型(如int,long,byte等)。这是一种类型。您可以使用自动装箱在双倍和双倍之间进行转换,但不能在int
和Double
之间进行转换。
您应该将numOfPrimes
声明为double
,或者将投射转换为double
而不是Double
double numOfPrimes=pf.FindNumPrimes(10000);
Double frequency=((Double)numOfPrimes)/10000d;
或
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;