2

我已经将我的排序问题编写如下,但我遇到了一个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;
        }
    }
}
4

2 回答 2

4

既然j涨到nj+1就出界了。您需要将其更改为

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

这样做可以确保x[j+1]在范围内。

于 2013-05-01T12:59:38.523 回答
0

错误在这里:

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

因为j+1等于n

进行此更改:

 for(j=0;j + 1<n;j++) {
  ...
于 2013-05-01T13:00:00.837 回答