15
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です。

4

3 に答える 3

22

編集 4/23/12

double cannot be dereferencedは、プリミティブでメソッドを呼び出そうとしたときに一部の Java コンパイラで発生するエラーです。もっと役立つように思えdouble has no such methodますが、私は何を知っていますか。

あなたのコードから、 hours.setText(hoursminfield); を実行することで、のテキスト表現hoursをコピーできると思われるようです。hoursminfieldこれにはいくつかのエラーがあります: 1) 時間は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;、2 つの s を分割していますint。その除算の値を取得するintので、Mins = 43; の場合。2 時間 = 分 / 60; // Mins / 60 は int = 0 です。これを double の時間に割り当てると、 // 時間は double のゼロに等しくなります。

あなたがする必要があるのは:

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

doubleまたはそのようなものでは、除算を強制的にdoubles ではなくs で行うために、除算の一部を a にキャストする必要がありますint

于 2012-04-23T02:25:09.257 に答える
2

言語を指定していませんが、Java の場合、基本型doubleと class の間に大きな違いがありDoubleます。

いずれにせよ、あなたsetTextのやり方は間違っているようです。メソッドは、そこに入れようとしているデータではなく、データフィールドにsetText属します。

hoursminsfield.setText (hours);

つまり、計算した double を使用して、フィールドのテキストを設定する必要があります。double を渡すことができるかどうかは、検討する必要があるかもしれない別の問題です。

別物:

double hours = Mins / 60;

が整数Minsの場合、整数値が得られ、それを double に入れます。つまり、切り捨てられます。除算後の精度を確実に維持したい場合は、次のようなものを使用できます。

double hours = (double) Mins / 60.0;

(これらの変更の 1 つだけで機能する場合もありますが、すべての用語を明示することを好みます)。

于 2012-04-23T02:04:01.157 に答える
0

このようにどうですか

double hours = Mins / 60.0

私は常に上記のステートメントを使用してdouble値を取得します

于 2012-04-23T04:20:56.567 に答える