2014-11-03 81 views
-2

我发现这个Java练习:如何解决这个程序?

创建具有TotalSales(双),委员会(双), Commissi onRate(双),和NoOfItems(整数)一类的销售。

编写一个Java应用程序,要求用户输入总销售额,然后项目数量计算佣金并打印出来。 佣金率应为:

条件:

小于500,commissionRate是0

大于或等于500或物品> = 5的数,佣金率是5%。

刨大于或等于1000或项目> = 10的数,佣金率是10%

..

我写这个代码:


主类:

import java.util.Scanner; 

public class testSales { 

    public static void main(String[] args) { 
     Sales s1 = new Sales(); 
     Scanner get = new Scanner(System.in); 
     System.out.println("Enter total Sales"); 
     s1.totalSale = get.nextDouble(); 
     System.out.println("Enter number of Items"); 
     s1.NoOfItems = get.nextInt(); 

     if(s1.totalSale < 500){ 
      s1.commission = s1.commissionRate = 0; 
     } 
     else if(s1.totalSale >= 500 && s1.totalSale <= 999 || s1.NoOfItems >= 5 && s1.NoOfItems <=9){ 
      s1.commission = s1.commissionRate = s1.totalSale * 5/100; 
     }else if(s1.totalSale >= 1000 || s1.NoOfItems >=10) { 
      s1.commission = s1.commissionRate = s1.totalSale *10/100; 
     } 
     System.out.println(s1.commission); 

    }   
} 
+1

它以什么方式不起作用?什么是错误(如果有的话)? ' – Jason 2014-11-03 03:28:21

+0

'但它看起来不像它工作正常' - 这是什么意思? – 2014-11-03 03:28:31

回答

0

除了通过HedonicHedgehog长大了点,还有一些其他的事情要考虑:

销售类只有两个全局变量,其对应于由用户输入的信息。另外两个字段佣金和佣金率是计算值。因此,不需要为它们创建变量。只需添加返回这些值的销售类访问器方法(getter)即可。例如,下面是我的getCommission()方法:

public double getCommission() 
{ 
    return totalSales * getCommissionRate(); 
} 

当然,你可以看到这种方法依赖于getCommissionRate()方法。因为对总项目的要求有差距,我忽略它现在:

public double getCommissionRate() 
{ 
    if (totalSales < 500) 
     return 0; 
    if(totalSales < 1000) 
     return .05; 
    else 
     return 0.1; 
} 

或者,您可以创建一个本地commission变量,返回之前设置的值。限制变量的范围是一种很好的编程习惯。在这种情况下,没有充分的理由要有全局变量commissioncommissionRate变量。

最后,你的测试类是简化的,因为你需要做的就是提示用户输入两个必需的字段,并且它只是吐出输出,因为Sales类提供了计算所需的计算:

public static void main(String[] args) 
{ 
    Sales s1 = new Sales(); 

    Scanner input = new Scanner(System.in); 
    System.out.print("Enter total Sales"); 
    s1.setTotalSales(input.nextDouble()); 

    System.out.print("Enter number of Items: "); 
    s1.setNumOfItems(input.nextInt()); 

    System.out.printf("$%.2f", s1.getCommission()); 
    input.close(); 
} 

我使用printf()方法来格式化输出字符串。以下是一个示例运行:

Enter total Sales: 503.45 
Enter number of Items: 5 
$25.17 

Enter total Sales: 1003.67 
Enter number of Items: 19 
$100.37 

Enter total Sales: 45.00 
Enter number of Items: 19 
$0.00 

请记住,由于上述原因,此示例忽略了项目的数量。一旦找出需要做什么来弥补需求中的差距,您可以修改此代码来完成剩下的工作。另请记住,您的Sales类只需要两个字段:totalSales和numOfItems。计算其他组件(佣金和佣金率);因此,不需要全局变量或setter方法。只是我提供的两个getter方法。

4

代码中的一个问题是NoOfItems> 5但totalSale < 500的情况。对于第是这种情况,佣金将被错误地设置为0,因为第一条if语句会吃掉它。

请尝试更具体地处理您的问题。 “这不起作用,我不知道为什么”不容易帮助。

+0

我正要指出同样的事情。需求(业务规则)存在差距。 – hfontanez 2014-11-03 03:44:51