双重不能被解除引用?

Dan*_*son 10 java double

String mins = minsField.getText(); 

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

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

    double hours = Mins / 60;

    hours.setText(hoursminsfield);
Run Code Online (Sandbox Code Playgroud)

问题是Double cannot be dereferenced.

mwe*_*ler 17

编辑4/23/12

double cannot be dereferenced是一些Java编译器在尝试调用基元上的方法时给出的错误.在我看来double has no such method会更有帮助,但我知道什么.

从你的代码,看来你认为你可以复制的文本表示hourshoursminfield通过执行hours.setText(hoursminfield); 这有一些错误:1)小时是一个double原始类型,没有方法可以调用它.这就是你问到的错误.2)你没有说什么类型的小时字段,也许你还没有宣布它.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); 
Run Code Online (Sandbox Code Playgroud)

原始答案(解决了代码中的其他问题):

double hours = Mins / 60;你分2 int秒.您将获得该int分区的值,因此如果Mins = 43; 双倍小时=分钟/ 60; // Mins/60是一个int = 0.将它分配给double小时使//小时为一个双倍等于零.

你需要做的是:

double hours = Mins / ((double) 60);
Run Code Online (Sandbox Code Playgroud)

或类似的东西,你需要将你的师的某些部分投射到一个double,以迫使分裂用doubles而不是ints完成.

  • @mwengler它实际上没有回答这个问题.问题是关于导致错误的原因是"Double无法解除引用".您的答案被接受的事实是无关紧要的(实际上只是更多地关注它是不正确的事实). (2认同)