Java中的无限do..while循环
有人能解释一下原因吗?当我使用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
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”,工时,工资);
//就在这里
}当(hoursWorkedhoursWorked
从不更改,因此循环条件从不为false。hoursWorked的值从不更改。它始终小于或等于60。您的while条件从未满足停止。您没有在循环中修改hoursWorked的值,因此它将在内部运行。但是,如果您传入一个值>60,则只执行一次。您设计代码的方式看起来根本不需要一个do while循环
块,因为您根本没有更改hoursworked
值。hoursworked没有更改。为什么您认为它不应该是无限的?这篇文章应该被标记为家庭作业;-)不,不是家庭作业……只是练习一些麻省理工的作业。谢谢,只是去掉了do while和if else语句……简单多了。@Appsheriff这就是为什么我没有理解循环的含义:)。不客气,朋友。