如何修复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(); } }
正确运行步骤
- 将代码文件命名为
CalculatePayProgram.java,放入名为calculatepayprogram的文件夹中,和包声明保持一致。 - 打开命令行,进入
calculatepayprogram文件夹的上级目录,执行编译命令:javac calculatepayprogram/CalculatePayProgram.java - 编译完成后,同目录下执行运行命令:
java calculatepayprogram.CalculatePayProgram即可正常启动,按照提示输入对应内容就能得到完整薪资明细。
内容的提问来源于stack exchange,提问作者KingBennyBoy87
相关产品推荐
相关产品推荐

