问题描述
- java小白求大神帮看一下为什么会发生数组越界。代码如下:
-
package arraytest;public class ArrayTestSort {
public static void main(String[] args) { int i,j=0; int[] arr = new int[]{100,40,60,87,34,11,56,0}; int temp = 0; for(i = 0;i<arr.length;i++){ for(j = 0;j<arr.length-i-1;j++){//这里的j<arr.length-i-1 变成j<arr.length-i。时为什么会发生数组越界? if(arr[j]<arr[j+1]){ temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } System.out.print(arr[i]+"t"); } }
}
解决方案
for(i = 0;i<arr.length;i++){
for(j = 0;j<arr.length-i-1;j++)
->
for(i = 0;i<arr.length - 1;i++){
for(j = 0;j<i;j++)
解决方案二:
数组的下标是从0开始取得 arr[0]=100
解决方案三:
当i等于零时,j<arr.length-i-1 即j的最大取值是 arr.length-1。然后 j +1 的下标去访问 arr 就越界了。
解决方案四:
当i等于arr.length-1时,j有一种小于0的情况,这是不行的
解决方案五:
j的最大取值是 arr.length-1
解决方案六:
i = 0的时候 j可以取到 length-1 但是你下面还要算arr[j+1] 数组最大下标是length-1 所以会越界啦
解决方案七:
当i=0时,for(j=0;j<8-0;j++){}当j=7时,可以进入里面的循环,if(arr[7]<arr[8]){}这里arr[8]数组越界了。
解决方案八:
当i=0时,,arr.length-0=8,,,当j=7时,,j+1=8,,arr[8]有没越界,,大声告诉我
解决方案九:
当i等于零时,j<arr.length-i-1 即j的最大取值是 arr.length-1。然后 j +1 的下标去访问 arr 就越界了。
时间: 2025-01-02 08:12:16