为什么此for数组循环使用newARRAY.length-1?

时间:2019-05-17 23:55:48

标签: java arrays sorting for-loop arraylist

您好,我是Java的初学者,现在我到达数组了,这里是一个for循环,用于从最高到最低对数字进行排序,我的问题是讲师为什么使用

  

newARRAY.length-1

public static int [] integers;

public static int [] sortArray(int[] array){
    boolean PeaceArray = true;
    int temp;
    int [] newARRAY = Arrays.copyOf(array,array.length);
    while(PeaceArray){
        PeaceArray = false;
        for(int i=0;i<newARRAY.length-1;i++){
            if(newARRAY[i]< newARRAY[i+1]){
                temp = newARRAY[i];
                newARRAY[i] = newARRAY[i+1];
                newARRAY[i+1] = temp;
                PeaceArray = true;

            }


        }


    }

    return newARRAY;
}

2 个答案:

答案 0 :(得分:1)

  

通常,java数组的第一个索引从零(0)开始,但是   数组给出数组的实际计数。

例如,考虑以下整数数组:

int[] numbers = {40, 55, 63, 17, 22, 68, 89, 97, 89}

该数组可以用图形表示,如下图array description

因此,如果我们要为此数组运行一个循环,如:

for(int i=0; i<numbers.length; i++){
   //this loop runs 9 times
}

如果上述循环i已初始化为0,并且i可以达到的最大值是8,但是该循环将运行9次,因为如果您将所有计数都计算在内从08的方式中,您得到9

但是如果您运行这样的循环

for(int i=0; i<numbers.length-1; i++){
   //this loop runs 8 times
}

该循环将运行8次,但i可以达到的最大值为7

您的讲师使用newARRAY.length-1是因为他不希望i的最大值超过the immediate lower number following newARRAY.length-1,因为他正在使用i+1的值来索引数组{ {1}}在代码中的某处。

如果他未在代码中使用newArray,则当newARRAY.length-1达到最大值时,i将给出一个newARRAY[i+1]错误,因为由于他要添加到IndexOutOfbounds以访问newARRAY

1中,将超出i

希望您能理解。

答案 1 :(得分:0)

数组从0开始索引

例如: int a [] = {1,2,3,4,5}; 那么a.length = 5但a [5]不在数组中退出

a [0] = 1

a [1] = 2

a [2] = 3

a [3] = 4

a [4] = 5

因此,我们使用a.length-1而不是a.length