为什么这样写会报错

来源:4-1 冒泡排序

weixin_慕先生7531528

2022-07-12 20:05:37

  int timp;

   int [] st={1,7,5,6,4,2,8};

   System.out.println("数组排序前");

   for(int n:st) {

   System.out.println(n+"    ");

   }

   //0 1 2 3 4 5 6

   for(int i=0;i<st.length-1;i++) {

   for(int j=st.length-1;j>=i;j--) {

    if(st[j]<st[j-1]) {

   timp=st[j];

   st[j]=st[j-1];

   st[j-1]=timp;

   }

   }

   }

   for(int n:st) {

   System.out.print(n+"    ");

   }


写回答

1回答

好帮手慕小黑

2022-07-13

同学你好,同学代码中内层循环有误,条件表达式j>=i,应该改为j>i,否则会报数组越界异常,原因是当外层循环i=0;,j=i时,在判断条件中st[j-1],数组下标就会变成-1,就会发生数组越界。

祝学习愉快!

0

0 学习 · 9886 问题

查看课程