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

如何修复Java程序'Command Execution Failed'报错 实现薪资计算功能

Java薪资计算程序"Command Execution Failed"报错修复

问题背景

这是开发者首次编写Java类实现薪资计算功能,程序需要完整输出以下字段:

  • Employee Name(员工姓名)
  • Rate of Pay(时薪标准)
  • Hours Worked(常规工作时长)
  • Overtime Worked(加班时长)
  • Gross Pay(总应发薪资)
  • Total amount of deductions(总扣除金额)
  • Net Pay(实发薪资)
    运行程序时直接抛出Command Execution Failed错误,无法正常执行。

报错核心原因

  • 最常见触发该错误的原因是文件名与公共类名不匹配:Java语法强制要求public修饰的类,类名必须和文件名完全大小写一致。如果代码文件没有命名为CalculatePayProgram.java,编译和运行阶段都会直接失败。
  • 其次是运行命令路径错误:代码声明了package calculatepayprogram包路径,不能进入包文件夹直接执行类文件,必须在包的上级目录用全限定类名启动,否则JVM无法找到对应类。
  • 原有代码无输入合法性校验,用户输入非数字内容时会抛出类型不匹配异常直接中断;同时存在冗余变量声明,也没有按需求输出全部要求展示的字段。

修复后可运行代码

package calculatepayprogram;

import java.util.Scanner;

/**
 * Calculate Pay Program
 * CPT 307: Data Structures & Algorithms
 * 7/5/2022
 */
public class CalculatePayProgram {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        
        double rateOfPay;
        int hoursWorked;
        double overtimeHours;
        double grossPay;
        double netPay;
        double totalDeductions;
        String employeeName;
        
        System.out.println("请输入您的姓名:");
        employeeName = reader.nextLine();
        
        // 时薪输入+校验
        System.out.print("请输入您的时薪标准:");
        while (!reader.hasNextDouble()) {
            System.out.print("输入无效,请输入数字格式的时薪:");
            reader.next();
        }
        rateOfPay = reader.nextDouble();
        
        // 常规工时输入+校验
        System.out.print("请输入您的常规工作时长(小时):");
        while (!reader.hasNextInt()) {
            System.out.print("输入无效,请输入整数格式的工作时长:");
            reader.next();
        }
        hoursWorked = reader.nextInt();
        
        // 加班时长输入+校验
        System.out.print("请输入您的加班时长(小时):");
        while (!reader.hasNextDouble()) {
            System.out.print("输入无效,请输入数字格式的加班时长:");
            reader.next();
        }
        overtimeHours = reader.nextDouble();
        
        // 薪资计算
        double regularPay = rateOfPay * hoursWorked;
        double overtimePay = overtimeHours * 1.5 * rateOfPay;
        grossPay = regularPay + overtimePay;
        
        // 扣除项计算
        double federalTax = .15 * grossPay;
        double stateTax = .0307 * grossPay;
        double medicare = .0145 * grossPay;
        double socialSecurity = .062 * grossPay;
        double unemployment = .0007 * grossPay;
        totalDeductions = federalTax + stateTax + medicare + socialSecurity + unemployment;
        
        netPay = grossPay - totalDeductions;

        // 按要求输出全部字段,金额保留2位小数
        System.out.println("\n===== 本周薪资明细 =====");
        System.out.printf("Employee Name(员工姓名): %s%n", employeeName);
        System.out.printf("Rate of Pay(时薪标准): $%.2f/小时%n", rateOfPay);
        System.out.printf("Hours Worked(常规工作时长): %d 小时%n", hoursWorked);
        System.out.printf("Overtime Worked(加班时长): %.1f 小时%n", overtimeHours);
        System.out.printf("Gross Pay(总应发薪资): $%.2f%n", grossPay);
        System.out.printf("Total amount of deductions(总扣除额): $%.2f%n", totalDeductions);
        System.out.printf("Net Pay(实发薪资): $%.2f%n", netPay);

        reader.close();
    }   
}

正确运行步骤

  1. 将代码文件命名为CalculatePayProgram.java,放入名为calculatepayprogram的文件夹中,和包声明保持一致。
  2. 打开命令行,进入calculatepayprogram文件夹的上级目录,执行编译命令:javac calculatepayprogram/CalculatePayProgram.java
  3. 编译完成后,同目录下执行运行命令:java calculatepayprogram.CalculatePayProgram即可正常启动,按照提示输入对应内容就能得到完整薪资明细。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:18:32