2009-11-18 4 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 элементами, и вы используете 6-й элемент, который не существует и не связан с – SjB

ответ

2

Array ограничен при создании. В вашем примере он имеет размер 4 поля.
С 0-индексированный массив это означает, что вы можете получить доступ к этим поля, не больше:

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

ах, поэтому мой массив был слишком мал. i wanst знает об этом. – OVERTONE

7

Вы должны объявить его способным к 5 предметам, а не 4, в объявлении.

new String [5]; 
+1

Точно. Для удобства, вот Учебник по массивам: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/arrays.html – BalusC

+0

и 5-й элемент - дневной массив [4] – ziftech

0

Ваш массив имеет размер 4, и вы добавляете 5 элементов.

0

Вы определяете пять элементов для четырехэлементного массива. Java использует индексы на основе нуля.

2

При необходимости, пусть компилятор сделать подсчет для вас:

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

Таким образом, вы может добавлять или удалять элементы без необходимости изменять длину массива в другом месте. Меньше вводить текст тоже.

Смежные вопросы