0

このコードでは、「あなたの割引は $ です。合計は $ です。」sales >= 10 と表示したいのですが、10 未満の場合は **「割引なし。あなたの合計は$です。」

問題は、何を入力しても「割引なし。合計 $ 」と表示されることです。そしてそれは計算を行います。どんな助けでも大歓迎です。

import java.util.Scanner;

    public class SoftwareSales
    {
       public static void main(String[] args)
       {

          Scanner keyboard = new Scanner(System.in);

          int sales = 99;

          int quantity;
          double total;
          double rate = 0;
          double discount;

          System.out.print ("Enter amount of packages purchased: ");
                quantity = keyboard.nextInt();

          total = quantity * sales;
          discount = total * rate;
          total = total - discount;

          if (sales < 10) {
                if (sales >= 10 || sales <= 19)  
                    rate = 0.20;  
                else if (sales >= 20 || sales <=49)  
                    rate = 0.30;  
                else if (sales >= 50 || sales <=99)  
                    rate = 0.40;  
                else if (sales > 100)  
                    rate = 0.50;  
                System.out.println("Your discount is $" + (int)discount + 
                                       ". Your total is: $" + (int)total);
          } else {

                    System.out.print("No discount. " + 
                                     "Your total is: $" + (int)total);
    }
       }
    }
4

5 に答える 5

1

あなたがしなければならないのは、変更することだけです if (sales < 10)

の中へ

if (sales > 10)

これが主な問題であり、販売数量を何らかの形で変更します

于 2013-09-14T17:35:50.917 に答える
1

あなたの計算のすぐ下にあると思いますtotal

if (sales < 10) {

する必要があります

if (sales >= 10) {

あなたの質問のように。

しかし、また、sales == 99何を入力しても?多分あなたがしたい

    if (total >= 10) {

? そして、それを使用していないのに、なぜ計算rateするのでしょうか?

于 2013-09-14T17:35:57.473 に答える
1

に初期化salesしました99

int sales = 99;  

そのため、条件sales < 10は常に与えられていますfalse.Soifブロックは決して実行されません。
条件を変更する必要があります

sales<10  

sales>10

if block を実行します。

于 2013-09-14T17:36:21.893 に答える
1

いくつかの問題があります。sales主なものは、決して変更しないの値に依存していることです。quantityユーザーが入力した代わりに使用するつもりだったようです:

if (quantity< 10) {
    if (quantity >= 10 || quantity <= 19)
        rate = 0.20;
    else if (quantity >= 20 || quantity <=49)
        rate = 0.30;
    else if (quantity >= 50 || quantity <=99)
        rate = 0.40;
    else if (quantity > 100)  
        rate = 0.50;

2 番目の問題は、if ステートメントが間違っていることです。そのままでは、ユーザーが 10 未満の値を入力した場合にのみ割引を適用しているため、意味がありません。大なりまたは等しい演算子を使用するように変更します。

if (quantity >= 10) {

また、AND の方が適切に機能するように見える場合は、if/else-if で OR 演算子を使用しています。次のように切り替えます。

if (sales >= 10 && sales <= 19)
    rate = 0.20;
else if (sales >= 20 && sales <=49)
    rate = 0.30;
else if (sales >= 50 && sales <=99)
    rate = 0.40;

最後に、計算後に実際に適用rateするわけではありません。discountまだ 0 に等しい場合は、計算が上にありますrate。if ステートメントの下に移動して、機能させます。

if (quantity >= 10) {
    if (quantity >= 10 && quantity <= 19)  
        rate = 0.20;  
    else if (quantity >= 20 && quantity <=49)  
        rate = 0.30;  
    else if (quantity >= 50 && quantity <=99)  
        rate = 0.40;  
    else if (quantity > 100)  
        rate = 0.50;  

    discount = total * rate;
    total = total - discount;

    System.out.println("Your discount is $" + (int)discount + 
        ". Your total is: $" + (int)total);
} else {

    System.out.print("No discount. " + 
        "Your total is: $" + (int)total);
于 2013-09-14T18:01:53.093 に答える
0

答えは@tharwenによってすでに与えられています。コードは次のようになります

if (quantity >= 10) {
  if (quantity>= 10 || quantity<= 19)  {
    rate = 0.20;  
  } else if (quantity >= 20 || quantity <=49) {
    rate = 0.30;  
  } else if (quantity >= 50 || quantity <=99) {
    rate = 0.40;  
  } else if (quantity > 100) {
    rate = 0.50;
  }
  System.out.println("Your discount is $" + (int)discount + ". Your total is: $" + (int)total);
  } else {
    System.out.print("No discount. " + "Your total is: $" + (int)total);
  }
于 2013-09-14T17:40:23.803 に答える