我在看http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html
我正在尝试
double b = Math.sqrt(absoluteNumber);
int c = b.intValue();
但是我收到了这个错误:
Factorise.java:13: error: double cannot be dereferenced
int c = b.intValue();
请帮忙吗?
答案 0 :(得分:14)
double
不是对象,它是原始类型。
只需写(int)b
即可完成工作。
如果你真的需要一个Double
对象,你需要构建一个。
答案 1 :(得分:6)
double
是一个“原始类型”,它没有intValue()
方法(实际上它没有任何方法,因为它是一个原始方法)。试试Double包装器类,它有一个intValue()
方法。
Double b = Math.sqrt(absoluteNumber);
int c = b.intValue();
或者只是使用强制转换:
double b = Math.sqrt(absoluteNumber);
int c = (int) b;
答案 2 :(得分:2)
你可以简单地施展它:
int c = (int)b;
答案 3 :(得分:1)
类中的特定编译时错误是尝试在声明为基本类型的值上调用方法的结果。
原始类型不是Object
,因此没有属性。因此他们没有任何方法。
您可以将原始double
值转换为原始int
值,
double b = Math.sqrt(absoluteNumber) ;
int a = (int) b ;
或使用名为自动装箱的Java功能将double
强制转换为Double
---以便使用intValue
方法Number
类实现的Double
接口:
double b = Math.sqrt(absoluteNumber) ;
int a = ( (Double) b ).intValue( ) ;
另一种方法是使用valueOf
类的intValue
和Double
方法:
double b = Math.sqrt(absoluteNumber) ;
int a = ( Double.valueOf(b) ).intValue( ) ;
答案 4 :(得分:0)
尝试
public static void main(String[] args) {
Double b = Math.sqrt(43253);
int c = b.intValue();
System.out.println("#### S = " + c);
}
<强>输出强>
#### S = 207
答案 5 :(得分:0)
这条简单的线将完成这项工作。
integer_var_name = (int) double_var_name;