如何让Java薪资计算器循环计算3名员工的工资?
解决方案:循环处理3名员工工资计算
先修正你代码里的核心问题,再实现符合需求的循环逻辑:
原代码的问题
- 变量拼写错误:
hourlyRare应为hourlyRate - 错误使用
while循环:此处应使用if判断工时是否超标,否则会陷入无限循环 - 加班工资计算逻辑错误:工时超过40时,仅超出40的部分按1.5倍计算,而非全部工时乘1.5
- 缺少循环处理3名员工的逻辑
完整实现代码
import java.util.Scanner; public class EmployeePayCalculator { public static void main(String[] args) { Scanner input = new Scanner(System.in); // for循环处理3名员工,employeeNum从1到3对应员工编号 for (int employeeNum = 1; employeeNum <= 3; employeeNum++) { System.out.print("Enter hourly rate for employee " + employeeNum + ": "); double hourlyRate = input.nextDouble(); // 用double支持小数时薪 System.out.print("Enter hours worked for employee " + employeeNum + ": "); double hoursWorked = input.nextDouble(); // 支持带小数的工时 double totalPay; if (hoursWorked <= 40) { totalPay = hoursWorked * hourlyRate; } else { // 前40小时按正常薪资,超出部分按1.5倍计算 totalPay = (40 * hourlyRate) + ((hoursWorked - 40) * hourlyRate * 1.5); } // 按要求格式输出,保留两位小数更符合工资显示习惯 System.out.printf("Pay for employee %d is: %.2f%n", employeeNum, totalPay); } input.close(); } }
关键说明
- 循环控制:用
for循环从employeeNum=1开始,每次循环执行employeeNum++(增量操作),直到employeeNum>3停止,刚好覆盖3名员工 - 变量类型优化:将
int改为double,支持小数时薪和非整数工时(比如42.5小时) - 加班逻辑修正:避免把正常工时也按加班薪资计算,符合实际工资规则
- 输出格式化:用
printf的%.2f格式化输出,保证工资显示为两位小数
如果偏好while循环,也可以这样实现:
Scanner input = new Scanner(System.in); int employeeNum = 1; while (employeeNum <= 3) { // 内部逻辑与for循环完全一致 System.out.print("Enter hourly rate for employee " + employeeNum + ": "); double hourlyRate = input.nextDouble(); System.out.print("Enter hours worked for employee " + employeeNum + ": "); double hoursWorked = input.nextDouble(); double totalPay; if (hoursWorked <= 40) { totalPay = hoursWorked * hourlyRate; } else { totalPay = (40 * hourlyRate) + ((hoursWorked - 40) * hourlyRate * 1.5); } System.out.printf("Pay for employee %d is: %.2f%n", employeeNum, totalPay); employeeNum++; // 增量操作推进循环 } input.close();
内容的提问来源于stack exchange,提问作者Rose
相关产品推荐
相关产品推荐

