2014-12-14 3 views
-1

Я искал причину, по которой этот код будет использовать только 10% -ный дисконтный сценарий, указанный ниже, независимо от того, что я ввел для окна ввода данных discountPercentage. Мне нужно сделать так, чтобы только проценты, которые будут рассчитаны, составляют 10%, 15% или 25%. Если пользователь вводит что-нибудь еще в сообщение поле ввода discountPercentage, скидка будет по умолчанию 10% с цены 1.Расчет скидки

import javax.swing.JOptionPane; 
import java.text.DecimalFormat; 

public class Assignment3 { 

    public static void main(String[] args) { 
     // Calculate the discount price of an item 

     // Convert price to display as decimal format 
      DecimalFormat df = new 
      DecimalFormat("#,###,##0.00"); 

     // Declare discountPercentage variable  


     // Display message boxes for price and percentage entries 
     double price1 = Double.parseDouble(JOptionPane.showInputDialog(null, " Enter item price (ex:2.35): ")); 
     double discountPercentage = Double.parseDouble(JOptionPane.showInputDialog(null, " Enter discount percentage ")); 
     int dicountPercentage = 0; 

     // Declare if else statements for output calculations 
      if (discountPercentage > 25){ 

      JOptionPane.showMessageDialog(null, " The discounted price is: " + "$" + df.format(price1 - .10 * price1)); 

      }else if (dicountPercentage == 25){ 

      JOptionPane.showMessageDialog(null, " The discounted price is: " + "$" + df.format(price1 - .25 * price1)); 

      } else if (discountPercentage > 15){ 

      JOptionPane.showMessageDialog(null, " The discounted price is: " + "$" + df.format(price1 - .10 * price1)); 

      } else if (dicountPercentage == 15){ 

      JOptionPane.showMessageDialog(null, " The discounted price is: " + "$" + df.format(price1 - .15 * price1)); 

      } else if (discountPercentage >= 10){ 

      JOptionPane.showMessageDialog(null, " The discounted price is: " + "$" + df.format(price1 - .10 * price1)); 

              } 
           } 

Благодарности

+2

Почему вы используете несколько сослагательного наклонения, если вы могли бы просто вычислить отношение со скидкой напрямую? – MightyPork

+0

Хорошо, вы прошли через код в отладчике, чтобы узнать, какой путь он принимает? – OldProgrammer

+1

Спасибо, ребята. Я на 100% новичок в программировании на Java. Просто начал этот Java-класс пару недель назад. Изучаю, как я иду. Проблема с кодировкой была решена. –

ответ

7

Ваш код будет использовать сценарий на 10% каждый раз, потому что во всех условия на discountPercentage, вы используете значение .10, это точно такую ​​же строку каждый раз:

 JOptionPane.showMessageDialog(null, " The discounted price is: " + "$" + df.format(price1 - .10 * price1)); 

То есть, во всех е ESE условие у вас есть та же строка:

 if (discountPercentage > 25){ 
     } else if (discountPercentage > 15){ 
     } else if (discountPercentage >= 10){ 

Также обратите внимание, что у вас есть две переменные в этом коде с почти таким же названием:

  • dicountPercentage
  • discountPercentage

И первая переменная установлена ​​0 и никогда не изменяется, , поэтому все условия с использованием dicountPercentage бессмысленны. И такого рода именование очень плохо: избегать использования переменных с очень похожими именами. (Сначала я даже не заметил, там были две переменные, я думал, как одно и то же ...)

+1

Спасибо Янош. Как вы можете сказать, я новичок, и это мой первый курс Java. Я даже не заметил разницу в именах переменных. Я удалил «dicountPercentage», поскольку тот был некорректным. Проблема с кодировкой исправлена. Спасибо за быстрый ответ! –

0
import javax.swing.JOptionPane; 
import java.text.DecimalFormat; 

public class Assignment3 { 

    public static void main(String[] args) { 
     // Calculate the discount price of an item 

     // Convert price to display as decimal format 
     DecimalFormat df = new 
     DecimalFormat("#,###,##0.00"); 

     // Declare discountPercentage variable  


     // Display message boxes for price and percentage entries 
     double price1 = Double.parseDouble(JOptionPane.showInputDialog(null, " Enter item price (ex:2.35): ")); 
     double discountPercentage = Double.parseDouble(JOptionPane.showInputDialog(null, " Enter discount percentage ")); 
     //int dicountPercentage = 0; 

     // Declare if else statements for output calculations 
     switch(discountPercentage) 
     { 
     case 25: 
      JOptionPane.showMessageDialog(null, " The discounted price is: " + "$" + df.format(price1 - .25 *price1)); 
      break; 

     case 15: 
      JOptionPane.showMessageDialog(null, " The discounted price is: " + "$" + df.format(price1 - .15 *price1)); 
      break; 

     default: 
      JOptionPane.showMessageDialog(null, " The discounted price is: " + "$" + df.format(price1 - .10 *price1)); 
      break; 
     } 
    } 
Смежные вопросы