双重不能被解除引用?

时间:2012-04-23 01:58:06

标签: 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);

问题在于Double cannot be dereferenced

3 个答案:

答案 0 :(得分:17)

编辑4/23/12

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

从您的代码中,您似乎认为可以通过执行将hours的文本表示复制到hoursminfield     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); 

ORIGINAL ANSWER(解决了代码中的其他问题):

double hours = Mins / 60;中,您要划分两个int。您将获得该分区的int值,如果是     分钟= 43;     双倍小时=分钟/ 60;     // Mins / 60是一个int = 0.将它分配给双倍小时     //小时等于零的双倍。

您需要做的是:

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

或类似的东西,你需要将你的部门的某些部分投射到double,以便强制使用double而不是int来完成除法。< / p>

答案 1 :(得分:2)

您尚未指定语言,但如果是Java,则基本类型double和类Double之间存在很大差异。

无论如何,你的setText似乎是错误的。 setText方法属于数据字段,不属于您尝试放入的数据:

hoursminsfield.setText (hours);

换句话说,您要使用刚刚计算的双精度设置字段的文本。是否可以传递双倍是一个不同的问题可能需要检查。

另一件事:

double hours = Mins / 60;
如果Mins是一个整数`,

会给你一个整数值然后放入一个double。这意味着它将被截断。如果您想确保在分割后保持精确,可以使用以下内容:

double hours = (double) Mins / 60.0;

(虽然它可能仅适用于其中一项更改,但我更倾向于明确所有术语。)

答案 2 :(得分:0)

这样怎么样

double hours = Mins / 60.0

我总是使用上面的语句来获取双值