2017-04-18 60 views
-2

我是一個java初學者,我試着讓下面的代碼工作。爲什麼在解析args []數組時遇到ArrayIndexOutOfBoundsException?

class AgeCalc { 

    public static void main (String args[]) { 

     int yob = Integer.parseInt(args[1]); 
     int current = Integer.parseInt(args[0]); 
     int age = current - yob; 
     boolean hadBday = Boolean.parseBoolean(args[2]); 

     if (hadBday) { 
      System.out.println("You've already had your birthday"); 
     } else { 
      age--; 
      System.out.println ("You've not had your birthday"); 
     } 

     System.out.println("You are " + age + " years old!"); 
    } 
} 

我得到的錯誤是:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 
    at AgeCalc.main(AgeCalc.java:5) 
+1

你傳遞給程序的參數是什麼? – David

+1

請鏈接到本教程。 –

+1

的可能的複製[java.lang.ArrayIndexOutOfBoundsException:0](http://stackoverflow.com/questions/23456742/java-lang-arrayindexoutofboundsexception-0) – Tom

回答

1

您的args陣列(一個在主方法),這只是長度0的,這意味着在執行上索引12操作它沒有索引12(或更多)。這就是爲什麼ArrayIndexOutOfBounds異常被拋出。你只是出界了。

0

這裏你必須在運行應用程序時傳遞3個參數。

因爲你正在訪問阿根廷陣args[2]

傳遞運行在命令行中jar當沿參數,

$ java AgeCalc 2 5 true 

如果你是一個IDE。在運行時找到傳遞參數的方式。

0

按照您的說法,您需要提示輸入來自用戶的輸入或首先將值分配給變量以獲取答案。 我不會爲此使用數組,除非您存儲幾個生日或日期進行比較,否則不需要它。

此外,當分配變量使用,很容易讓你也引用註釋你的代碼允許所有的人試圖幫助你

所以基本上...你的代碼的一個Hello World版本會更容易調試意味深長的話遵循這樣的

Public static void main (string [] args) 
{ 
     //Declaring variables 
     int bDate = 1964; 
     int curDate= 2017; 
     int age; 

     age= bDate - curDate; 
     System.out.println("Your current age is "+ age); 

}//End of main 

至於輸入和determing如果發生某人的生日,您需要做一些搜索數組和對象數組有很多材料對如何搜索和排序數組。我可以顯示你需要的所有代碼,但是再次推薦kahn academy它會給你一個很好的基礎。我相信這裏的其他人也可以推薦書籍來幫助你學習。

+0

這不回答這個問題,爲什麼他有例外。 – Prizoff

相關問題