2011-06-06 82 views
0

我是學習java的新手,並且在按照書中的教程進行操作時,在線程「main」中收到此錯誤異常java.lang.ArrayIndexOutOfBoundsException:0 。我試圖從網絡上進行研究,找出有關錯誤的更多信息,但我找不到答案。更糟糕的是,當我試圖訪問他們的網站時,這本書的網站不再存在。線程「主」的異常java.lang.ArrayIndexOutOfBoundsException:0

該計劃是關於計算兩種類型的工人,工程師和技術人員的付款,包括爲兩名不同工人的原始工資的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); 
    } 
} 

非常感謝您提前爲所有的你的幫助:)

+0

您是如何調用該程序的?包括您輸入的實際命令行。你可以在'int position = Integer.parseInt(args [0]);'如果你沒有在命令行中包含任何參數。 – 2011-06-06 14:38:27

回答

3

你不能傳遞兩個參數給程序。你在做什麼args [0]它期望通過命令行傳遞給程序的整數。請添加您如何調用該程序。

java PayCalculator3 10 10 

您應該使用兩個整數作爲參數調用它,如上例所示。

+0

非常感謝你,這真是太傻了!調用程序時沒有加入參數。 – 2011-06-06 16:10:51

1

所以基本上你必須進入並在你的cmd中調用它,否則你將會收到錯誤 即你沒有加入參數。 enter image description here

+0

是的,當我調用程序時,我忘記了放入參數。這非常愚蠢,非常感謝你的幫助! – 2011-06-06 16:11:22

+0

這都是好人 – 2011-06-06 16:14:20

相關問題