线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:0

时间:2011-06-06 14:35:27

标签: java exception-handling

我是学习java的新手,在阅读一本书的教程时,我收到了这个错误在线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:0。我尝试从网上进行研究以了解更多信息关于错误,我找不到答案。更糟糕的是,当我试图访问他们的网站时,这本书的网站已不复存在。

该计划是关于计算2类工人,工程师和技术人员的付款,包括超时工资,是2名不同工人原始工资的1.5倍。 最长工作时间为160小时,额外时间会触发加班费。

这是我写的代码:

class PayCalculator3 {
    public static void main (String []args) {
    final int maxNoOverTime = 160;
    final double engineerHourlyPay = 30;
    final double technicianHourlyPay = 25.5;
    final double overTimeRate = 1.5; 
    int position = Integer.parseInt(args[0]);
    int hoursWorked = Integer.parseInt(args[1]);
    double salary;

salary = 
(position == 0) ? 
// employee is an Engineer
(hoursWorked <= maxNoOverTime) ?
    // he did not work overtime
    (hoursWorked * engineerHourlyPay)
    :
    // he worked overtime
    ((maxNoOverTime * engineerHourlyPay) + ((hoursWorked - maxNoOverTime) * (engineerHourlyPay * overTimeRate))) 
: (position == 1) ?
// if employee is a Technician
(hoursWorked <= maxNoOverTime) ?
    // he did not work Overtime
    (hoursWorked * technicianHourlyPay)
    :
    // he worked overtime
    ((maxNoOverTime * technicianHourlyPay) + ((hoursWorked - maxNoOverTime) * (technicianHourlyPay * overTimeRate)))

:
//Employee Type unknown
-1;
String str = (salary != -1) ?
        ("This month's salary >> $" + salary)
        :
        ("Who the heck are you?");
System.out.println(str);
    }
}

非常感谢您提供的所有帮助:)

2 个答案:

答案 0 :(得分:3)

您不能将两个参数传递给该程序。你在做args [0]的地方,它期望一个整数通过命令行传递给程序。请添加您调用该程序的方式。

java PayCalculator3 10 10

您应该使用两个整数作为参数调用它,如上例所示。

答案 1 :(得分:1)

所以基本上你必须进入并在你的cmd中调用它或者你正在使用的其他东西你将收到错误 即你没有输入参数。 enter image description here