2009-11-18 63 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", 
}; 

这样,你可以添加或删除元素,而无需在另一个地方更改阵列长度。打字也少。