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 ; 

または、クラスによって実装されたインターフェイスのメソッドを使用するために、---自動ボクシングと呼ばれるJava機能を使用doubleして---にキャストします。DoubleintValueNumberDouble

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

別の方法は、クラスのメソッドvalueOfintValueメソッドを使用することです。Double

double b = Math.sqrt(absoluteNumber) ;
int a = ( Double.valueOf(b) ).intValue( ) ;
于 2012-11-17T17:27:06.577 に答える
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 に答える
0

この単純な行がその役目を果たします。

integer_var_name = (int) double_var_name;
于 2012-11-17T17:57:38.210 に答える