双重问题Java.lang.String -Text字段

时间:2012-03-24 17:10:09

标签: java netbeans double

这是一个新问题,但我对编程很陌生,而且我只有一周多的时间进入11年级的编程课程。我们使用Java,并与Netbeans合作。

我现在正在做的是:

  

在商店特卖期间,可享受10%的折扣   购物满$ 10.00。

     

创建一个提示用户输入金额的应用程序   购买然后返回折扣价,以及   折扣金额本身。

我的代码:

 DecimalFormat x = new DecimalFormat ("$###.00");
 double purchases, discount, finalPrice;
 purchases = Double.parseDouble (purchaseInput.getText ());
 if (purchases >= 10) {
     discount = purchases * 0.10;
 }    
 else { 
     discount = 0;
 }
 finalPrice = purchases - discount;
 discountOutput.setText (discount);
 finalPriceOutput.setText (finalPrice);

问题是最后两行。我正在尝试将值设置为文本字段。它说它找到了双倍,但需要java.lang.String。我尝试将它们更改为double.toString ()的字符串,但它说双重不能被解除引用。我现在很困惑,请帮忙。

我确定修复程序并不复杂,但我查看了迄今为止我们学到的每个内容部分两次仍然无法找到解决问题的方法。

3 个答案:

答案 0 :(得分:2)

您已经有DecimalFormat将双打转换为字符串。所以试试这个:

 DiscountOutput.setText(x.format(Discount));
 FinalPriceOutput.setText(x.format(FinalPrice));

您也可以不使用DecimalFormat来执行此操作,但结果会略有不同,因为数字的格式不是“$ ###。00”:

 DiscountOutput.setText(Discount.toString());
 FinalPriceOutput.setText(FinalPrice.toString());

另外,作为建议,我认为当您使用“$#,##0.00”时,金额会更好。这样你有数千个分隔符(,)和一美元的分数显示为$ 0.51而不是$ .51,这看起来很奇怪。所以:

 DecimalFormat x = new DecimalFormat ("$#,##0.00");

答案 1 :(得分:2)

写下这个:

DiscountOutput.setText(Double.toString(Discount));
FinalPriceOutput.setText(Double.toString(FinalPrice));

另外,请记住,在Java中,所有变量都应以小写字符开头。声明变量的标准方法应该是:

double purchases, discount, finalPrice;

答案 2 :(得分:1)

TextField的setText方法始终只接受String。所以,你需要做String.valueOf()

DiscountOutput.setText(String.valueOf(Discount));
FinalPriceOutput.setText(String.valueOf(FinalPrice));