Java While 循环 - 计算和显示收益

问题描述

我发现循环语句真的很难,所以我需要帮助。该程序让用户输入每个销售人员的总销售额,计算他们的佣金,即 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:  $ 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 的值进行初始化。

去阅读更多关于循环的内容:

  1. For 循环
  2. while 循环
  3. do-while 循环

https://www.geeksforgeeks.org/loops-in-java/

可以使用下面的代码参考

 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。

另外,你的计算是错误的,你应该使用 (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!");
}
,
int sales;
double salary = 0,totalSalary = 0;
boolean keep = true;


while (keep) 
{
    System.out.print("\nENTER SALES IN DOLLAR (-1 TO END):  ");
    sales = scan.nextInt();
    if (sales == -1)
    {
        keep = false; 
    }
    else 
    {
        salary = (sales * 0.09)+ 200;
        System.out.println("SALARY: $ " +salary);
        totalSalary = totalSalary + salary;
    }
        
}
scan.close();
System.out.println("\nTHE TOTAL SALARY FOR THE WEEK:  $ " +totalSalary);
System.out.print("GOOD DAY!  THANK YOU FOR USING THE SYSTEM!");

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...