双重不能被解除引用?
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/23/12
double cannot be dereferenced
是一些Java编译器在尝试调用基元上的方法时给出的错误。 在我看来, double has no such method
会更有帮助,但我知道什么。
从您的代码中,您似乎认为可以通过执行hours.setText(hoursminfield)将hours
的文本表示复制到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);
原始答案(解决了代码中的其他问题):
double hours = Mins / 60;
你要划分两个int
。 您将获得该分区的int
值,因此如果Mins = 43; 双倍小时=分钟/ 60; // Mins / 60是一个int = 0.将它分配给double小时使//小时等于零。
你需要做的是:
double hours = Mins / ((double) 60);
或类似的东西,你需要将你的分区的某些部分强制转换为double
,以强制分裂用double
s而不是int
来完成。
您没有指定语言,但如果是Java,则基本类型double
和Double
类之间存在很大差异。
在任何情况下,你的setText
似乎是错误的方式。 setText
方法属于数据字段,而不是您尝试放入的数据:
hoursminsfield.setText (hours);
换句话说,您要使用刚刚计算的双精度设置字段的文本。 你是否可以通过双倍是一个可能需要检查的另一个问题。
另一件事:
double hours = Mins / 60;
将,如果Mins
是一个整数 `,给你一个整数值,然后你把它放入一个double。 这意味着它将被截断。 如果您想确保在分工后保持精确,可以使用以下内容:
double hours = (double) Mins / 60.0;
(虽然它可能仅适用于其中一个更改,但我更倾向于明确所有术语)。
怎么样这样
double hours = Mins / 60.0
我总是使用上面的语句来获取double值