Java中的无限do..while循环

Java中的无限do..while循环,java,do-while,Java,Do While,有人能解释一下原因吗?当我使用do-while循环时,我总是遇到一个无限循环。我错过了什么 package com.assignment2; public class FooCorporation { public static void main(String[] args) { employee(9.50, 55); employee(8.20, 47); employee(10.00, 73); } publ

有人能解释一下原因吗?当我使用do-while循环时,我总是遇到一个无限循环。我错过了什么

package com.assignment2;

public class FooCorporation {

    public static void main(String[] args) {

        employee(9.50, 55);
        employee(8.20, 47);
        employee(10.00, 73);

    }

    public static void employee(double basePay, int hoursWorked) {

        double salary = 0;
        int overtimeHours = 40;

        do {
            if (basePay >= 8.00 || hoursWorked > 40 ) {
                if (hoursWorked > 40) {
                    salary = basePay * hoursWorked
                            * ((hoursWorked - overtimeHours) * 1.5);
                } else {
                    salary = basePay * hoursWorked;
                }

            }

            else 
                System.out.println("According to law: Base Pay should be more than $8.00");

            System.out.printf("Total Pay: %d %.2f\n", hoursWorked, salary);

        } while (hoursWorked <= 60);

    }

}
package com.assignment2;
公共类食品公司{
公共静态void main(字符串[]args){
雇员(9.50,55);
雇员(8.20,47);
雇员(10.00,73);
}
公共静态无效员工(双基薪,工作时间内){
双薪=0;
int超时小时=40;
做{
如果(基本工资>=8.00 | |工时>40){
如果(工作小时数>40){
工资=基本工资*工作小时数
*((工作小时-加班时间)*1.5);
}否则{
工资=基本工资*工作小时数;
}
}
其他的
System.out.println(“根据法律:基本工资应超过8美元”);
System.out.printf(“总工资:%d%.2f\n”,工时,工资);

}而(hoursWorked您永远不会修改
hoursWorked
的值,因此总是满足条件,因此是无限循环。您将希望在每次迭代结束后,在

    else 
        System.out.println("According to law: Base Pay should be more than $8.00");

    System.out.printf("Total Pay: %d %.2f\n", hoursWorked, salary);

    //Right here
} while (hoursWorked <= 60);
else
System.out.println(“根据法律:基本工资应超过8美元”);
System.out.printf(“总工资:%d%.2f\n”,工时,工资);
//就在这里

}当(hoursWorked
hoursWorked
从不更改,因此循环条件从不为false。

hoursWorked的值从不更改。它始终小于或等于60。

您的while条件从未满足停止。您没有在循环中修改hoursWorked的值,因此它将在内部运行。但是,如果您传入一个值>60,则只执行一次。

您设计代码的方式看起来根本不需要一个
do while循环
块,因为您根本没有更改
hoursworked
值。

hoursworked没有更改。为什么您认为它不应该是无限的?这篇文章应该被标记为家庭作业;-)不,不是家庭作业……只是练习一些麻省理工的作业。谢谢,只是去掉了do while和if else语句……简单多了。@Appsheriff这就是为什么我没有理解循环的含义:)。不客气,朋友。