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

Java数组薪资计算问题求助:仅计算最后一位员工薪资

嘿,别着急!刚学Java遇到这种问题太正常啦😊

问题分析与解决方案

从你描述的“程序仅计算最后一位员工薪资”的现象来看,大概率是循环逻辑或结果输出的位置出了问题——最常见的两种情况:要么你用单个变量存储薪资,每次循环都覆盖了之前的结果;要么你把输出语句写在了循环外面,只打印了最后一次计算的数值。

我先给你补全并修正一个符合需求的薪资计算示例代码(包含数组的正确使用):

public class ArrayIG { 
    public static void main(String[] args) { 
        final int NUM_EMPLOYEES = 3; 
        // 存储每个员工的工作时长
        int[] hours = new int[NUM_EMPLOYEES]; 
        // 存储每个员工的时薪
        double[] payRates = new double[NUM_EMPLOYEES]; 
        // 存储每个员工的总薪资
        double[] grossPay = new double[NUM_EMPLOYEES]; 

        // 示例:手动给员工赋值(你也可以用Scanner实现用户输入)
        hours[0] = 40;
        hours[1] = 35;
        hours[2] = 45;
        payRates[0] = 15.0;
        payRates[1] = 18.0;
        payRates[2] = 20.0;

        // 循环遍历每个员工,计算薪资
        for (int i = 0; i < NUM_EMPLOYEES; i++) {
            grossPay[i] = hours[i] * payRates[i];
            // 每次循环都输出当前员工的薪资,避免只保留最后一个结果
            System.out.println("员工" + (i+1) + "的总薪资:" + grossPay[i]);
        }

        // 如果你想统一输出所有结果,也可以在循环结束后遍历数组
        // System.out.println("\n所有员工薪资汇总:");
        // for (int i = 0; i < NUM_EMPLOYEES; i++) {
        //     System.out.println("员工" + (i+1) + ":" + grossPay[i]);
        // }
    } 
}

常见错误点排查:

  • 单个变量覆盖结果:如果你没有用数组grossPay存储每个员工的薪资,而是用了单个double grossPay;变量,那么每次循环计算都会把新结果覆盖掉旧的,最后就只剩最后一位员工的数值。
  • 输出语句位置错误:如果你的System.out.println写在for循环外面,那只会打印最后一次循环计算的结果,而不会输出前两位员工的薪资。
  • 循环索引问题:比如循环条件写错(比如i <= NUM_EMPLOYEES),不过这种情况通常会触发数组越界错误,和你描述的现象不太匹配。

如果你的代码和我假设的不一样,可以把完整代码贴出来,我再帮你精准定位问题~

内容的提问来源于stack exchange,提问作者iplaygenji15

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:34:23