1. ホーム
  2. java

[解決済み】Doubleはdereferencedできない?

2022-01-19 05:57:33

質問

String mins = minsField.getText(); 

    int Mins;
    try
    {
        Mins = Integer.parseInt(mins);

     }
     catch (NumberFormatException e)
     {
         Mins = 0;
     }

    double hours = Mins / 60;

    hours.setText(hoursminsfield);

問題は、その Double cannot be dereferenced .

解決方法は?

EDIT 2012年4月23日

double cannot be dereferenced は、プリミティブのメソッドを呼び出そうとしたときに、いくつかのJavaコンパイラが出すエラーです。 それは、私には double has no such method の方が便利だと思うのですが、どうなんでしょう。

あなたのコードから、あなたはテキスト表現の hourshoursminfield を実行することで hours.setText(hoursminfield) とします。 これにはいくつかエラーがあります。 1) hoursは double これはプリミティブな型であり、呼び出せるメソッドはありません。 このため、ご質問のようなエラーが発生します。 2) hoursminfieldがどのような型であるかが書かれていませんが、多分まだ宣言さえしていないのでしょう。 3) 変数の値をメソッドの引数として設定するのは珍しいことです。 たまにあることですが、普通はありません。

あなたが望んでいると思われることを行うコードの行は、次のとおりです。

String hoursrminfield; // you better declare any variable you are using

// wrap hours in a Double, then use toString() on that Double
hoursminfield = Double.valueOf(hours).toString(); 

// or else a different way to wrap in a double using the Double constructor:
(new Double(hours)).toString(); 

// or else use the very helpful valueOf() method from the class String which will 
// create a string version of any primitive type:
hoursminfield = String.valueOf(hours); 

元の答え(あなたのコードで別の問題に対処した)。

double hours = Mins / 60; を分割しています。 int s. を得ることができます。 int はその分割の値であり、例えば Mins = 43; double hours = Mins / 60; // Mins / 60はint = 0であり、これをdouble hoursに代入することで // 時間数は0に等しい2倍です。

必要なのは

double hours = Mins / ((double) 60);

などに、分割の一部をキャストする必要があります。 double で強制的に分割するためです。 double でなく int s.