2016-01-25 3 views
0

Я пытаюсь программировать некоторые сортировки, даже если я не имею синтаксис или логическую ошибку в моем коде, при компиляции я получаю исключение, которое, кажется, связано с методом сортировки:Bubble рода: ошибка компиляции

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 
at triBulle.bulle(triBulle.java:35) 
at triBulle.main(triBulle.java:64) 

Вот мой код:

public static void bulle(int[] T) 
{ 
    int n = T.length; 
    boolean echange = true ; 

    while((n>0) && (echange)) 
    { 
     echange = false ; 
     for(int j = 0 ; j<n ; j++) 
     { 
      if(T[j] >T[j+1]) 
      { 
       int tmp = T[j]; 
       T[j] = T[j+1]; 
       T[j+1] = tmp; 
       echange = true ; 
      } 
     } 
     n = n-1; 
    } 

} 

Благодаря проверить это.

+1

Это не ошибка компиляции, как ваш доклад код компилируется , Однако существует логическая ошибка, и именно поэтому вы получаете ошибку при попытке получить доступ к 'T [n]' –

+0

Изменить 'for (int j = 0; j

+0

", хотя у меня нет синтаксиса или логической ошибки в моем коде "- это предположение является первой проблемой. Ваше первое предположение, когда есть проблема, состоит в том, что это * * ваш код, который виноват. (Как это имеет место здесь ...) –

ответ

1

Кто-то исправит меня, если я ошибаюсь, но я уверен, что в java массив с элементами [0], [1] и [2] имеет length из 3. Так что в вашем цикле while , если j равен length-1, то это последний индекс. Поэтому, когда [j+1] вызывается, вы получите ArrayIndexOutOfBoundsException

Один из способов исправить это будет

for(int j = 1 ; j<n ; j++) 
    { 
     if(T[j-1] >T[j]) 

Или

for(int j = 0 ; j<n-1 ; j++) 
    { 
     if(T[j] >T[j+1]) 
Смежные вопросы