posts - 17,  comments - 14,  trackbacks - 0

首先,写出一个给数组排序的程序:

 public class Demo01 {

 public static void main(String[] args) {

  int[] arr={7,8,9,4,5,6,0,3,2,1};

  for (int i=0;i<arr.length;i++){

  for(int j=0;j < arr.length;j++){

  if(arr[j]<arr[j+1]){

int temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

for(int i=0;i<arr.length;i++)

System.out.print(arr[i]+" ");

}

}

运行这个程序的时候会弹出:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9

at com.dr.ONE.Demo01.main(Demo01.java:8)

所谓下标越界,就是程序在执行过程中用到的数组下标超出了所给出的数组本来的下标。要排列的数组为arr={7,8,9,4,5,6,0,3,2,1},总共有10个数字,下标依次为arr[0]arr[1]......arr[9]

当程序执行到for(int j=0;j < arr.length;j++)时,因为是循环,所以只要j小于数组arr的长度10,就会执行下面的if语句。当j=9时,程序仍然会执行下面的语句,会让arr[9]arr[9+1]也就是arr[10]比较大小,但是数组中总共就10个元素,下标为0~9,这里却出现了arr[10],下标超出了0~9的范围,所以报出 下标越界 的错误。

当程序执行到arr[8]arr[8+1]比较之后就比较完了所有的元素,j就不能再增大了,也就是说j<9,数组的长度arr.length10,所以要把程序改为

for (int j = 0; j < arr.length-1; j ++)

也就是程序应该为:

 public class Demo01 {

 public static void main(String[] args) {

  int[] arr={7,8,9,4,5,6,0,3,2,1};

  for (int i=0;i<arr.length;i++){

  for(int j=0;j < arr.length-1;j++){

  if(arr[j]<arr[j+1]){

int temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

for(int i=0;i<arr.length;i++)

System.out.print(arr[i]+" ");

}

}

再执行一遍程序,结果为:

9 8 7 6 5 4 3 2 1 0 

posted on 2010-10-09 08:39 Mineralwasser 阅读(227) 评论(1)  编辑  收藏

FeedBack:
# re: 下标越界
2010-10-10 19:51 | 逆风-飞
写的不错哦 好详细  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(1)

文章档案(21)

搜索

  •  

最新评论

阅读排行榜

评论排行榜