Проблемы с двойными полями & Java.lang.String -Text - PullRequest
2 голосов
/ 24 марта 2012

Это своего рода новый вопрос, но я действительно новичок в программировании, и я только чуть больше недели изучаю курс программирования в 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 ]

2 голосов
/ 24 марта 2012

Напишите это:

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

Также помните, что в Java все переменные должны начинаться с символа нижнего регистра. Стандартный способ объявления ваших переменных должен быть следующим:

double purchases, discount, finalPrice;
2 голосов
/ 24 марта 2012

У вас уже есть 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 голос
/ 24 марта 2012

Метод setText TextField всегда принимает только строку.Итак, вам нужно сделать String.valueOf ()

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