我找到了这个Java练习:
创建一个具有TotalSales(double),Commission(double)的Sales类, Commissi onRate(double)和NoOfItems(整数)。
编写一个java应用程序,要求用户输入总销售额和项目数,然后计算佣金并打印出来。 佣金率应如下:
条件:
小于500,佣金率为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);
}
}
答案 0 :(得分:4)
代码中的一个问题是NoOfItems&gt; 5但总销售额&lt; 500.对于这种情况,佣金将被错误地设置为0,因为第一个if语句会吃掉它。
请尝试更具体地解决您的问题。 “这不起作用,我不知道为什么”不容易帮助。
答案 1 :(得分:0)
除了HedonicHedgehog提出的观点之外,还有其他一些事情需要考虑:
销售类只有两个全局变量,对应于用户输入的信息。另外两个字段,佣金和佣金率,是计算值。因此,无需为它们创建变量。只需添加返回这些值的sales类访问器方法(getters)即可。例如,下面是我的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;
}
或者,您可以创建一个LOCAL commission
变量,并在返回之前设置该值。限制变量范围是一种很好的编程习惯。在这种情况下,没有充分理由拥有全局commission
或commissionRate
变量。
最后,您的测试类被简化了,因为您需要做的就是提示用户输入两个必需的字段,它只是吐出输出,因为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方法。只是我提供的两种吸气方法。