java - 如何让我的哨兵脱离循环?
问题描述
我想知道我是否可以获得一些关于如何让我的哨兵脱离循环的反馈,所以它不计入我的答案的一部分。我尝试在我的 while 循环中添加一个中断,但它只会弄乱我的公式。(我想做的是让系统打印佣金的有效条目总数,并为所有条目提供总计)。谢谢
public class Commission {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
NumberFormat nf = NumberFormat.getCurrencyInstance();
int salesPeople = 0;
double baseSalary = 200;
double sales = 0;
double salesTotal = 0;
double grandTotal = 0;
while (sales != -999) {
// ask for the amount of sales
System.out.println("Enter sales amount (enter -999 to end): ");
sales = scan.nextDouble();
salesPeople = salesPeople + 1;
// do the calculations
double noCommission = 0;
double lowCommission = ((sales - 500) * .03);
double mediumCommission = ((500 * .03) + ((sales - 1000) * .05));
double highCommission = ((500 * .03) + (2000 * .05) + ((sales - 3000) * .08));
double commission = 0;
if (sales < 500)
commission = noCommission;
else if (sales > 500 && sales < 1000)
commission = lowCommission;
else if (sales > 1000 && sales < 3000)
commission = mediumCommission;
else if (sales >= 3000)
commission = highCommission;
salesTotal = baseSalary + commission;
grandTotal = grandTotal + salesTotal;
System.out.println("You earned " + nf.format(commission)
+ " in commission for a total $" + salesTotal
+ " salary.\n");
}
if (sales == -999){
System.out.println("The number of employees is " + salesPeople
+ " and the total payout is " + grandTotal);
}
}
}
解决方案
输入标记值后立即对其进行测试。您正在计算销售数量(而不是员工数量),我会限制可变范围(和蠕变)。就像是,
Scanner scan = new Scanner(System.in);
NumberFormat nf = NumberFormat.getCurrencyInstance();
int salesCount = 0;
double grandTotal = 0, baseSalary = 200;
while (true) {
// ask for the amount of sales
System.out.println("Enter sales amount (enter -999 to end): ");
double sales = scan.nextDouble();
if (sales == -999) {
break;
}
salesCount++;
double commission = 0;
if (sales >= 500 && sales < 1000) {
commission = ((sales - 500) * .03);
} else if (sales >= 1000 && sales < 3000) {
commission = ((500 * .03) + ((sales - 1000) * .05));
} else if (sales >= 3000) {
commission = ((500 * .03) + (2000 * .05) + ((sales - 3000) * .08));
}
double salesTotal = baseSalary + commission;
grandTotal += salesTotal;
System.out.println("You earned " + nf.format(commission)
+ " in commission for a total $"
+ nf.format(salesTotal) + " salary.\n");
}
System.out.println("The number of sales is " + salesCount
+ " and the total payout is " + nf.format(grandTotal));
推荐阅读
- python - Python R^2 计算出错
- sql - 我们可以使用 ColdFusion 的 ArrayAppend() 函数将 DateTime 附加到数组中吗?
- cng - Microsoft MSCAPI-CSP 和 CNG 兼容性
- swift - 尝试开始 HKLiveWorkout 在会话中不断意外发现 nil
- mysql - 如何使列值的唯一组合?
- nswag - 在 NSwag 中添加自定义请求标头
- java - 通过由多个线程执行的方法将结果写入范围报告
- documentation - 应用程序 Wiki 中应包含哪些内容?
- ios - iOS推送通知不适用于奇数设备
- azure-data-factory - Azure 数据工厂查找