2013-06-23 5 views
0
public class dereks { 
public static void main (String [] args){ 
    int array [] = {1,2,3,5,6,7}; 
    int sum =0; 
    for(int counter=0; counter<=array.length; counter++){ 
     sum+=array[counter]; 
    } 
    System.out.println(sum); 
} 
} 

Может ли кто-нибудь сказать мне, что случилось с этим? Я не могу понять, почему я получаю сообщение об ошибке «Исключение в потоке» main «java.lang.ArrayIndexOutOfBoundsException: 5 at dereks.main (dereks.java:7)».Исключение в теме «main» java.lang.ArrayIndexOutOfBoundsException: 5

+0

У вас есть ошибка «один за другим». Попробуйте выполнить свой код вручную, чтобы узнать, в чем проблема. – Vulcan

+0

Массивы основаны на 0 на Java. – Maroun

ответ

3

Изменить ваш цикл завершающего состояния от <= к <:

for(int counter=0; counter<array.length; counter++){ 
    sum+=array[counter]; 
} 

Или еще проще, использовать Еогеасп синтаксис:

for(int i : array){ 
    sum+=i; 
} 

Синтаксис Еогеасп является предпочтительным, когда вам действительно не нужен индекс, в котором находится каждый элемент.

+1

Это сработало. Спасибо за вашу помощь. :-) –

+0

Превосходно. Знак '=' вызывал проблему. –

6

Вы получаете сообщение об ошибке, поскольку ваш предел цикла составляет <=array.length. Элементы массива от 0 до array.length-1.

4

Массивные индексы начинаются с 0. Это означает, что последний элемент находится на этапе array.length - 1.

Использование: counter < array.length

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