2016-04-13 2 views
3

У меня короткий блок кода, который бросает мне исключение всякий раз, когда я бегу, и я не могу понять, почему:ArrayIndexOutOfBoundsException в избирательной программе

public class Debug 
{ 
    public static void main (String[] args) 
    { 
     String[] electionName = {"John Smith", "Mary Miller", "Michael Duffy", "Tim Robison", "Joe Ashtony"}; 
     int[] electionVotes = {5000, 4000, 6000, 2500, 1800}; 
     int i = 0; 
     for (i = 0; i < electionVotes.length; i++); 
     { 
      System.out.println(electionName[i] + electionVotes[i]); 
     } 
    } 
} 

Может кто-нибудь помочь мне?

+5

Поскольку у вас есть ';' after for() – joel314

+0

Обратите внимание, что объявление переменной цикла 'i' внутри' for' сделает проблему очевидной на этапе компиляции, так как 'i' не будет доступен за пределами тело цикла: 'for (int i = 0; ...)' –

ответ

4

Ваш цикл имеет небольшую ошибку. он заканчивается a;

для (i = 0; i < electionVotes.length; i ++);

Таким образом, цикл for эффективно ничего не делает и только увеличивает I-5, после чего вы получаете доступ к элементам индекса 5 в 2 массивах, которые генерируют исключение, которое вы видите.

1

Посмотрите на конец своего заявления for. Проблема возникает из характера ;

for (i = 0; i < electionVotes.length; i++); // <- 

Это эквивалентно:

for (i = 0; i < electionVotes.length; i++) {} 

//Now, i = 5 
{ 
    System.out.println(electionName[i] + electionVotes[i]); 
} 
0

Потерять; в конце вашего цикла 'for'!

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