You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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();
    }
}

关键说明

  1. 循环控制:用for循环从employeeNum=1开始,每次循环执行employeeNum++(增量操作),直到employeeNum>3停止,刚好覆盖3名员工
  2. 变量类型优化:将int改为double,支持小数时薪和非整数工时(比如42.5小时)
  3. 加班逻辑修正:避免把正常工时也按加班薪资计算,符合实际工资规则
  4. 输出格式化:用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 14:10:27