2009-11-18 62 views
0

無法真正理解這裏發生了什麼問題?異常和數組問題

這只是一個簡單的異常與數組越界。

public class Days 
{ 
    public static void main (String args[]) 
    { 
     String[] dayArray = new String [4]; 
     { 
      dayArray [0] = "monday"; 
      dayArray [1] = "tuesday"; 
      dayArray [2] = "wednesday"; 
      dayArray [3] = "Thursday"; 
      dayArray [4] = "Friday"; 

      try 
      { 
       System.out.println("The day is " + dayArray[5]); 
      } 
      catch(ArrayIndexOutOfBoundsException Q) 
      { 
       System.out.println(" invalid"); 
       Q.getStackTrace(); 
      } 
      System.out.println("End Of Program"); 
     } 
    } 
} 

沒有任何人有任何想法,也爲什麼不跑?我收到錯誤:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 
    at Days.main(Days.java:14) 
+1

它是簡單的聲明陣列5元件和您使用不存在進出結合 – SjB 2009-11-18 13:50:53

回答

2

數組在創建時受到限制。在你的例子中,它有4個字段的大小。
以0索引的數組它意味着你可以訪問這些字段,沒有任何更多:

dayArray [0] = "monday"; 
dayArray [1] = "tuesday"; 
dayArray [2] = "wednesday"; 
dayArray [3] = "Thursday"; 
+0

啊,所以我的陣列太小了。 我很想知道這一點。 – OVERTONE 2009-11-18 13:49:33

7

您應該在聲明中聲明它有5項而不是4項。

new String [5]; 
+1

恰好6'th元件。爲了方便起見,這裏的陣列教程:http://java.sun.com/docs/books/tutorial/java/nutsandbolts/arrays.html – BalusC 2009-11-18 13:43:06

+0

和第五元素是dayArray [4] – ziftech 2009-11-18 13:44:54

0

您的數組大小爲4,並且您要添加5個元素。

0

你定義四個元素的數組五行。 Java使用基於零的索引。

2

在適當的時候,讓編譯器執行計數爲您提供:

String[] dayArray = { 
    "Monday", 
    "Tuesday", 
    "Wednesday", 
    "Thursday", 
    "Friday", 
}; 

這樣,你可以添加或刪除元素,而無需在另一個地方更改陣列長度。打字也少。