双击无法提领?双击无法提领?(Double cannot be dereferenced?)

2019-05-13 14:40发布

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

Answer 1:

编辑12年4月23日

double cannot be dereferenced是,当你尝试调用一个原始的方法一些Java编译器会给出错误。 在我看来, double has no such method会更有益的,但我怎么知道。

从你的代码,看来你认为你可以的文本表示复制hourshoursminfield做hours.setText(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 int秒。 您将获得int该部门的价值,因此,如果敏思= 43; 双小时=分钟] / 60; //分钟] / 60是一个int = 0。其分配给双小时使得//小时双重等于零。

你需要做的是:

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

或类似的东西,你需要你的部门的某些部分转换为double ,以迫使师做与double秒且不int秒。



Answer 2:

您还没有指定的语言,但是,如果它的Java,有基本型之间有很大的区别double和类Double

在任何情况下,你setText似乎周围的错误的方式。 该setText方法将属于数据字段,不是你想就摆在那里的数据:

hoursminsfield.setText (hours);

换句话说,你要设置的字段的文本,使用您刚刚计算出的两倍。 是否可以通过一个双是可能需要检查另当别论。

另一件事:

double hours = Mins / 60;

会,如果Mins是integer`,给你一个数值,你然后放入双。 这意味着它会被截断。 如果你想确保你保持精确的划分之后,你可以使用这样的:

double hours = (double) Mins / 60.0;

(虽然它可能只有那些改变一个工作,我宁愿让所有条款明确)。



Answer 3:

这个怎么样的方式

double hours = Mins / 60.0

我总是用上面的语句,以获得双重价值



文章来源: Double cannot be dereferenced?
标签: java double