Java While循环-计算和显示收入
我发现循环语句非常困难,所以我需要帮助。该程序允许用户输入每个销售人员的总销售额,计算他们的佣金(200美元加上销售额的9%),并显示销售人员的收入。此外,为了汇总所有输入的总销售额,用户应输入-1,从而结束程序。此程序使用while循环,输出应如下所示:Java While循环-计算和显示收入,java,loops,while-loop,computation,Java,Loops,While Loop,Computation,我发现循环语句非常困难,所以我需要帮助。该程序允许用户输入每个销售人员的总销售额,计算他们的佣金(200美元加上销售额的9%),并显示销售人员的收入。此外,为了汇总所有输入的总销售额,用户应输入-1,从而结束程序。此程序使用while循环,输出应如下所示: ENTER SALES IN DOLLAR (-1 TO END): 5000.00 SALARY: $ 650.00 ENTER SALES IN DOLLAR (-1 TO END): 6000.00 SALARY
ENTER SALES IN DOLLAR (-1 TO END): 5000.00
SALARY: $ 650.00
ENTER SALES IN DOLLAR (-1 TO END): 6000.00
SALARY: $ 740.00
ENTER SALES IN DOLLAR (-1 TO END): 7000.00
SALARY: $ 830.00
ENTER SALES IN DOLLAR (-1 TO END): -1
THE TOTAL SALARY FOR THE WEEK: $2200.00
GOOD DAY! THANK YOU FOR USING THE SYSTEM!
到目前为止,我有以下代码:
public static void main(String[] args)
{
Scanner scan = new Scanner (System.in);
double sales = 0, salary = 0, totalSalary;
while (sales >= 1)
{
System.out.print("ENTER SALES IN DOLLAR (-1 TO END): ");
sales = scan.nextDouble();
salary = (sales + 200)* 0.09;
System.out.println("SALARY: $ " +salary);
}
}
}
我真的被困在我应该把“while”放在哪里,以及如何用“-1”停止循环你的代码永远不会进入循环,因为
sales=0
。要进入循环内部,请使用do while循环或使用>=1的其他值初始化
继续阅读有关循环的更多信息:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double sales = 0, salary = 0, totalSalary;
System.out.print("ENTER SALES IN DOLLAR (-1 TO END): ");
sales = scan.nextDouble();
while (sales >= 1) {
salary = (sales + 200) * 0.09;
System.out.println("SALARY: $ " + salary);
System.out.print("ENTER SALES IN DOLLAR (-1 TO END): ");
sales = scan.nextDouble();
}
}
您的代码将永远不会进入循环,因为
sales=0
。要进入循环内部,请使用do while循环或使用>=1的其他值初始化
继续阅读有关循环的更多信息:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double sales = 0, salary = 0, totalSalary;
System.out.print("ENTER SALES IN DOLLAR (-1 TO END): ");
sales = scan.nextDouble();
while (sales >= 1) {
salary = (sales + 200) * 0.09;
System.out.println("SALARY: $ " + salary);
System.out.print("ENTER SALES IN DOLLAR (-1 TO END): ");
sales = scan.nextDouble();
}
}
正如我看到的,您必须检查输入是否为-1,然后结束计算并输入结果。 此外,用户可能输入不正确的非数值,您必须捕获它,并且可能需要添加额外的负输入检查
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double sales , salary, totalSalary = 0;
while (true) {
try {
System.out.print("ENTER SALES IN DOLLAR (-1 TO END): ");
sales = Double.parseDouble(scan.nextLine());
if (sales == -1) break;
salary = 200 + sales * 0.09;
System.out.println("SALARY: $ " + salary);
totalSalary += salary;
} catch (NumberFormatException e) {
System.out.println("NumberFormatException");
}
}
System.out.println("THE TOTAL SALARY FOR THE WEEK: $" + totalSalary + "\n" +
" GOOD DAY! THANK YOU FOR USING THE SYSTEM!");
}
正如我看到的,您必须检查输入是否为-1,然后结束计算并输入结果。 此外,用户可能输入不正确的非数值,您必须捕获它,并且可能需要添加额外的负输入检查
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double sales , salary, totalSalary = 0;
while (true) {
try {
System.out.print("ENTER SALES IN DOLLAR (-1 TO END): ");
sales = Double.parseDouble(scan.nextLine());
if (sales == -1) break;
salary = 200 + sales * 0.09;
System.out.println("SALARY: $ " + salary);
totalSalary += salary;
} catch (NumberFormatException e) {
System.out.println("NumberFormatException");
}
}
System.out.println("THE TOTAL SALARY FOR THE WEEK: $" + totalSalary + "\n" +
" GOOD DAY! THANK YOU FOR USING THE SYSTEM!");
}
可以创建无限循环,直到输入设置为-1 另外,您的计算错误,您应该使用(x*0.09)+200 看看这里
public static void main(String[] args)
{
double salary = 0, totalSalary = 0;
try(Scanner scan = new Scanner (System.in))
{
while (true)
{
System.out.print("ENTER SALES IN DOLLAR (-1 TO END): ");
salary = scan.nextDouble();
if (salary == -1)
break;
salary = (salary* 0.09) + 200;
totalSalary += salary;
System.out.println("SALARY: $ " +salary);
}
}
catch (Exception e)
{
}
System.out.println("THE TOTAL SALARY FOR THE WEEK: $" + totalSalary);
System.out.println("GOOD DAY! THANK YOU FOR USING THE SYSTEM!");
}
可以创建无限循环,直到输入设置为-1 另外,您的计算错误,您应该使用(x*0.09)+200 看看这里
public static void main(String[] args)
{
double salary = 0, totalSalary = 0;
try(Scanner scan = new Scanner (System.in))
{
while (true)
{
System.out.print("ENTER SALES IN DOLLAR (-1 TO END): ");
salary = scan.nextDouble();
if (salary == -1)
break;
salary = (salary* 0.09) + 200;
totalSalary += salary;
System.out.println("SALARY: $ " +salary);
}
}
catch (Exception e)
{
}
System.out.println("THE TOTAL SALARY FOR THE WEEK: $" + totalSalary);
System.out.println("GOOD DAY! THANK YOU FOR USING THE SYSTEM!");
}
不要对货币金额使用浮点类型@Fildor我可以问一下,如果
sales>0
,你的情况会更好吗?这就是原因:@Fildor指出。感谢您不要将浮点类型用于货币金额@Fildor我可以问一下,如果sales>0
,你的情况会更好吗?这就是原因:@Fildor指出。谢谢你。工资的计算完全错误。无需使用do while
循环,然后使用if
在其内部使用相同的条件1。工资的计算完全错误。无需使用do while
循环,然后使用if
在相同的条件下在其内部使用,这还不错,但您正在累积错误。你应该只计算销售额,然后计算总销售额的佣金。照现在的情况,你在每次迭代中都要加上基本工资+四舍五入/浮点错误。还有一件事:不要相信用户的输入。如果不小心输入了-1000,你可能会把你的计算完全搞砸。@Fildor关于你的第一条评论,我是根据给出的正确结果来做的。关于你的第二条评论,我不相信他们。但我认为主要的问题是关于退出的问题。嗯,要求有点不清楚,是这样的。文本imho与示例不同。所以请不要发表第一条评论。@Fildor是的,我完全同意你的观点,不错,但你把错误加起来了。你应该只计算销售额,然后计算总销售额的佣金。照现在的情况,你在每次迭代中都要加上基本工资+四舍五入/浮点错误。还有一件事:不要相信用户的输入。如果不小心输入了-1000,你可能会把你的计算完全搞砸。@Fildor关于你的第一条评论,我是根据给出的正确结果来做的。关于你的第二条评论,我不相信他们。但我认为主要的问题是关于退出的问题。嗯,要求有点不清楚,是这样的。文本imho与示例不同。所以请不要发表第一个评论。@Fildor是的,我完全同意你的看法