2013-05-01 4 views
2

Я написал мою проблему сортировки следующим образом, но я получаю исключение ArrayIndexOutOfBounds. , который я не могу понять. PLZ помощь.ArrayIndexOutOfBounds при сортировке

System.out.println("Enter the total no of digits to sort:- "); 

n = Integer.parseInt(br.readLine()); 
x = new int[n]; 

System.out.println("Enter the elements:- "); 

for(i = 0; i < n; i++) 
    x[i] = Integer.parseInt(br.readLine()); 

for(i = 0; i < n; i++) 
{ 
    for(j = 0; j < n; j++) 
    { 
     if(x[j] > x[j+1]) //ascending order 
     { 
      temp = x[j]; 
      x[j] = x[j+1]; 
      x[j+1] = temp; 
     } 
    } 
} 
+0

Ну то, что размер х []? – Aquillo

+0

Размер x инициализируется во время выполнения. – jhe

+0

Да, мой вопрос больше не уместен, так как ваш обновленный предоставил ответ. – Aquillo

ответ

4

С j идет до n, j+1 находится вне границы. Вы должны изменить его

for(j=0;j<n-1;j++) 

Это будет убедиться, что x[j+1] находится в пределах границ.

+0

спасибо большое ..:) ... это сработало ... :) – jhe

+0

Я сделал ту же самую программу в netbeans n gt ошибка, говорящую ... "java.lang.NoClassDefFoundError: javaapplication3/Main Исключение в потоке" main «Результат Java: 1» ........ помощь по этому плз. – jhe

+0

@jhe Вероятно, это проблема с конфигурацией проекта netbeans. Вот [ссылка на соответствующее обсуждение] (http://stackoverflow.com/q/2702185/335858). – dasblinkenlight

0

Ошибка здесь:

if(x[j] > x[j+1]) { 
.... 

j+1 Поскольку равно n

Сделать это изменение:

for(j=0;j + 1<n;j++) { 
    ... 
+0

Nop, 'j + 1' IS' n' в последнем цикле. Хотя при установке 'int [n]' последний индекс равен «n - 1». Поэтому 'int [n]' или его эквивалент в последнем цикле 'int [j + 1]' будет outOfBound. * Пример *: int [4] создает ключи {0, 1, 2, 3} – Aquillo

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