6

我在看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();

请帮忙?

4

6 回答 6

15

double不是对象,它是原始类型。

简单的写作(int)b就可以完成这项工作。

如果你真的需要一个Double对象,你需要构造一个。

于 2012-11-17T17:23:01.993 回答
6

double是“原始类型”,它没有intValue()方法(实际上它没有任何方法,因为它是原始类型)。试试Double包装类,它有一个intValue()方法。

Double b = Math.sqrt(absoluteNumber);
int c = b.intValue();

或者简单地使用铸造:

double b = Math.sqrt(absoluteNumber);
int c = (int) b;
于 2012-11-17T17:22:20.590 回答
2

您可以简单地转换它:

int c = (int)b;
于 2012-11-17T17:21:58.693 回答
1

您的类中的特定编译时错误是尝试对声明为原始类型的值调用方法的结果。原始类型不是Objects,因此没有属性。因此他们没有任何方法。

您可以将原始double值转换为原始int值,

double b = Math.sqrt(absoluteNumber) ;
int a = (int) b ; 

或将其double转换为Double--- 使用称为自动装箱的 Java 功能--- 以便使用该类实现的接口的intValue方法:NumberDouble

double b = Math.sqrt(absoluteNumber) ;
int a = ( (Double) b ).intValue( ) ;

另一种方法是使用类的valueOfandintValue方法Double

double b = Math.sqrt(absoluteNumber) ;
int a = ( Double.valueOf(b) ).intValue( ) ;
于 2012-11-17T17:27:06.577 回答
0

这条简单的线将完成这项工作。

integer_var_name = (int) double_var_name;
于 2012-11-17T17:57:38.210 回答
0

尝试

public static void main(String[] args) {
        Double  b = Math.sqrt(43253);
        int c = b.intValue();

        System.out.println("#### S = " + c);

    }

输出

#### S = 207
于 2012-11-17T17:24:43.687 回答