Java 不能取消对Double的引用?
问题是,Java 不能取消对Double的引用?,java,double,Java,Double,问题是,Double不能被取消引用您还没有指定语言,但是如果是Java,基本类型Double和类Double之间有很大的区别 无论如何,您的setText似乎是错误的。setText方法属于数据字段,而不是您试图放入其中的数据: String mins = minsField.getText(); int Mins; try { Mins = Integer.parseInt(mins); } catch (NumberForma
Double不能被取消引用
您还没有指定语言,但是如果是Java,基本类型Double
和类Double
之间有很大的区别
无论如何,您的setText
似乎是错误的。setText
方法属于数据字段,而不是您试图放入其中的数据:
String mins = minsField.getText();
int Mins;
try
{
Mins = Integer.parseInt(mins);
}
catch (NumberFormatException e)
{
Mins = 0;
}
double hours = Mins / 60;
hours.setText(hoursminsfield);
换句话说,您希望使用刚才计算的双精度设置字段的文本。你是否能通过双倍考试是另一回事,可能需要检查一下
还有一件事:
hoursminsfield.setText (hours);
will,如果Mins
是一个整数,则会给您一个整数值,然后将其转换为双精度。这意味着它将被截断。如果要确保在除法后保持精度,可以使用以下方法:
double hours = Mins / 60;
(虽然它可能只适用于其中的一个更改,但我更愿意明确所有术语)。编辑4/23/12
double cannot dereference
是一些Java编译器在尝试调用原语上的方法时出现的错误。在我看来,double没有这样的方法
会更有帮助,但我知道什么
从您的代码中,您似乎认为可以通过执行以下操作将hours
的文本表示形式复制到hoursminfield
hours.setText(hoursminfield);
这有几个错误:
1) hours是一个double
,它是一个基本类型,没有可以调用的方法。这就是你所问的错误的原因。
2) 你没有说hoursminfield是什么类型,也许你还没有声明它。
3) 通过将变量作为方法的参数来设置变量的值是不常见的。有时会发生,但通常不会
执行您似乎想要的操作的代码行包括:
double hours = (double) Mins / 60.0;
原始答案(解决了代码中的另一个问题):
双倍小时=分钟/60代码>您正在将两个int
s分开。您将获得该除法的int
值,因此如果
分钟=43;
双倍小时=分钟/60;
//分钟/60是一个整数=0。将其分配为双倍小时会使
//小时等于零的双精度
您需要做的是:
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
,以便强制除法是用double
s而不是int
s来完成的。这样怎么样
double hours = Mins / ((double) 60);
我总是使用上面的语句来获得双精度值是的,这是我的错,但是你能告诉我如何解决这个问题吗?请噢,是的。您不能对Double调用setText
,因为Double只是一个数字。它没有setText
方法,因为它没有任何文本…啊,好吧,我明白了,你能建议我该怎么做吗?因为我在这方面很新,几乎不知道该做什么do@Daniel,非常仔细地检查我的代码片段。我把你的时间换成了hourminsfield
和hours
。这是你的第一步。@Daniel,这不是留言板。如果你有一个不同的问题,问一个不同的问题。我正在提出另一个问题,如果你能给我一些建议,我将不胜感激。这很好,一个公认的正确答案,我被否决了!也许你们中的一位超级用户可以告诉我为什么。@mwengler它实际上并没有回答这个问题。问题是导致错误的原因Double无法取消引用
。你的答案被接受的事实是无关紧要的(事实上只是让人们更多地注意到它是不正确的)。@Zshazz我想专家们会比提问者更清楚谁回答了他的问题。在回答提问者的真正意思之前,我知道下次要编辑这个问题。@Daniel,我看不出被接受的答案与你的问题有什么关系。当您修复原始问题时,您应该问另一个问题。如果您想使用小时作为双倍,则必须保留整数算术,如果您将整数与文字整数(如60)混合使用,则必须使用整数算术:double hours=Mins/60代码>改用像60.0这样的双精度文字。请不要对变量int-Mins使用大写字母代码>将其更改为int minutes
或int mints
。其他程序员会被误解,他们会认为Mins
是一个类而不是一个变量。请看这个
double hours = Mins / 60.0