0

对于此代码,我希望它显示“您的折扣为 $ 。”您的总金额为 $ 。”但当sales >= 10 它小于 10 时,我希望它显示 **“无折扣。你的总数是$。”

问题是无论我输入什么数字,它都会说“没有折扣。你的总美元。” 它进行计算。anyhelp 将不胜感激。

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

有很多问题。主要的一个是你依赖的值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;

第二个问题是您的 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 回答
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

您已初始化sales99.

int sales = 99;  

所以条件sales < 10总是给出false。所以if块永远不会执行。
你需要改变条件

sales<10  

sales>10

执行 if 块。

于 2013-09-14T17:36:21.893 回答
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 回答