Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java While循环-计算和显示收入_Java_Loops_While Loop_Computation - Fatal编程技术网

Java 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

我发现循环语句非常困难,所以我需要帮助。该程序允许用户输入每个销售人员的总销售额,计算他们的佣金(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的其他值初始化

继续阅读有关循环的更多信息:

  • For循环
  • while循环
  • 边做边循环
  • 可以使用以下代码参考

     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的其他值初始化

    继续阅读有关循环的更多信息:

  • For循环
  • while循环
  • 边做边循环
  • 可以使用以下代码参考

     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是的,我完全同意你的看法