2013-10-03 2 views
-4

Почему я получаю эту ошибку?Почему я получаю исключение ArrayIndexOutOfBoundsException в своем Java-коде?

Исключение в потоке "основного" java.lang.ArrayIndexOutOfBoundsException: 3 в Vectores.main (Vectores.java:86)

Я думаю, что ошибка здесь:

System.out.println("El Número mayor es:"+NMay); 
System.out.println("El Número menor es:"+NMen); 
if (NumP>0){ 
    System.out.println("Hay"+" "+NumP+" "+"Números Pares");} 
else { System.out.println("No hay números Pares"); } 
if (NumI>0){ 
    System.out.println("Hay"+" "+NumI+" "+"Números Impares");} 
else { System.out.println("No hay números Impares"); } 

for (i=0;i<N-1;i++){ 
    for (j=i+1;j<N;j++){ 
     if(Num[i]>Num[j]){ 
      aux=Num[i]; 
      Num[i]=Num[j]; 
      Num[j]=aux; 
     } 
    } 
} 

System.out.print("El Vector ordenado es: "); 
for (ord=0;ord<N;ord++){ 
    System.out.print(Num[ord]+", "); 
} 

for(Imp=1;Imp<=N;Imp=Imp+2){ 
    SumI=SumI+Num[Imp]; 
} 

System.out.print("La Suma de las Posiciones Impares es:"+SumI); 

Я сделал файл доступным here.

+1

Что такое 'N', а какая линия 86? – MadProgrammer

+1

-1 для идентификации линии 86. –

+1

FYI, я воспринимаю это как самонадеянное и грубое, чтобы разместить блок кода на этом форуме ... и затем попросить других людей отладить его для вас. Вы не платите никому за консультацию. Расскажите, что вы сделали, чтобы попытаться отладить это и почему вы не смогли решить проблему. Все IDE Java имеют надежные функции отладки; вам следовало бы пройти через код так же хорошо, как и любой другой. – scottb

ответ

1
for(Imp=1;Imp<=N;Imp=Imp+2){ 
    SumI=SumI+Num[Imp]; 
} 

Когда Imp = N, вы пытаетесь получить доступ Num [N], который является незаконным, так как ваш массив содержит индексы от 0 до (N-1). Аргумент stop в цикле for должен не be Imp < = N, так как он позволяет программе пытаться получить доступ к Num [N].

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