2015-12-02 4 views
-3

Я пытался создать программу сортировки массивов в Java. Поэтому я создал этот метод и попытался выполнить его, вызвав его из другой функции. Но я получаю это «ArrayIndexOutOfBoundsException 8» исключение времени выполнения. Так как я могу это исправить?ArrayIndexOutOfBoundsException 8 исключение времени выполнения в моем сортировочном коде массива

class arrayfunc { 
    int[] ascend(int[] p) { 
     int x = p.length; 
     for (int i = 0; i <= (x - 1); i++) { 
      int l = p[i]; 
      for (int j = i + 1; j <= x; j++) { 
       int f = p[j]; 
       if (f > l) { 
        int k = p[i]; 
        p[i] = p[j]; 
        p[j] = k; 
       } 
      } 
     } 
     return p; 
    } 
} 
+0

Можете ли вы, пожалуйста, правильно откорректировать свой код, назовите свою переменную лучше, чем i, j и p ... ArrayIndexOutOfBoundsException - исключение, говорящее о том, что вы пытаетесь получить доступ к таблице из своего лимита (например, вкладка [10] для массив из 10 элементов). Пожалуйста, проверьте состояние цикла – fabballe

+0

, можете ли вы указать, как вы вызываете метод, и образец ввода? я не получаю outOfBound, несмотря на то, что он игнорирует первое число. – SomeJavaGuy

+0

это пузырь сортировка. Он не должен разбиваться. Каждый индекс находится между 0 и длиной-1. Я думаю, что это снаружи. –

ответ

0

Заменить <= на < в обоих ваших for петель.

Кстати, Java никогда не выиграет кодовый гольф. Вы можете расширить свой текст ...

1

Ваша внутренняя петля

for(int j=i+1;j<=(x);j++) 

, вероятно, следует

for(int j=i+1;j<=(x-1);j++) 

иначе вы получите ArrayIndexOutOfBoundsException здесь:

int f=p[j]; 

, когда ваш индекс переменная j достигает значения x

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