2013-08-16 2 views
-3

Я совершенно новичок в программировании, и Java станет моим первым языком. Я использую eclipse для всего моего кодирования.Как устранить ошибку «java.lang.ArrayIndexOutOfBoundsException: 5»

Я искал массивы, просто пытаясь понять их. Я нашел этот сайт: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

Я сделал свой собственный вариант первого примера кода:

package testArray; 

public class TestArray 
{ 
    public static void main(String[] args) 
    { 
    // Declare a new array of integers 
    int[] anArray; 

    // Sets the array length to 5 
    anArray = new int[5]; 

    // Setting each array element 
    anArray[0] = 1; 
    anArray[1] = 2; 
    anArray[2] = 3; 
    anArray[3] = 4; 
    anArray[5] = 5; 

    // Displaying the value of each array element 
    System.out.println("Element at index 0: " + anArray[0]); 
    System.out.println("Element at index 0: " + anArray[1]); 
    System.out.println("Element at index 0: " + anArray[2]); 
    System.out.println("Element at index 0: " + anArray[3]); 
    System.out.println("Element at index 0: " + anArray[4]); 

    } 
} 

я получаю эту ошибку в консоли:

Исключение в потоке «основной» java.lang .ArrayIndexOutOfBoundsException: 5 at testArray.TestArray.main (TestArray.java:15)

Я также пытался использовать код со своего сайта, но получаю ту же ошибку. Правильно ли что-то не работает в eclipse?

Любая помощь очень ценится!

Примечание: Если у кого-то есть полезные сайты, которые были бы полезны начинающему программисту, добавьте их вместе со своим сообщением!

+0

Массивы * ноль * индексированные почти во всех языках программирования. –

+0

@BrianRoach За исключением Луа, только для полноты. – hexafraction

+0

@hexafraction - И еще пара других, но концепция не должна быть чужой и охватываться любой Java-книгой или учебным пособием (включая тот, с которым связан OP). –

ответ

4

Вот проблема:

anArray[5] = 5; 

заменить это на:

anArray[4] = 5; 

, как йо определили массив размером 5, так что вы можете использовать только индекс между 0-4:

anArray = new int[5]; 

Если вы попытаетесь получить доступ к любому индексу выше 4, вы столкнетесь с ArrayIndexOutOfBoundException.

+0

О, я даже не знаю, как я пропустил это! Спасибо, что указали это! – badchiefy

+0

@badchiefy Np :-), если мой ответ помог тогда, пожалуйста Примите ответ, чтобы помочь другим, сталкивающимся с одной и той же проблемой. Вы можете принять его, нажав на галочку слева до моего ответа. –

+0

Удивительный, уверенный в себе. – badchiefy

2
anArray[5] = 5; 

Фактически доступ к 6-му элементу, который не существует, поскольку массивы основаны на 0. new int[5] содержит 5 элементов, пронумерованных 0, 1, 2, 3 и 4.

все индексы должны быть меньше длины массива. Вместо этого используйте anArray[4] = 5;.

+0

Благодарим за помощь! – badchiefy

+0

@badchiefy Нет проблем. Пожалуйста, отметьте отметку/отметьте ответ, который помог, в этом случае, вероятнее всего, что Юнед Ахсан. – hexafraction

0

Массивы в Java являются 0 на основе и вы создали массив размером 5.

anArray [5] = 5; находится за пределами вашего массива, но похоже, что это может быть опечатка.

вероятно Вы имели в виду поставить

anArray [4] = 5;

+0

Благодарим за помощь! – badchiefy

0

Может быть, вы хотите

package testArray; 

public class TestArray 
{ 
    public static void main(String[] args) 
    { 
    // Declare a new array of integers 
    int[] anArray; 

    // Sets the array length to 5 
    anArray = new int[5]; 

    // Setting each array element 
    anArray[0] = 1; 
    anArray[1] = 2; 
    anArray[2] = 3; 
    anArray[3] = 4; 
    anArray[4] = 5; 

    // Displaying the value of each array element 
    System.out.println("Element at index 0: " + anArray[0]); 
    System.out.println("Element at index 1: " + anArray[1]); 
    System.out.println("Element at index 2: " + anArray[2]); 
    System.out.println("Element at index 3: " + anArray[3]); 
    System.out.println("Element at index 4: " + anArray[4]); 

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