您好,我是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;
}
答案 0 :(得分:1)
通常,java数组的第一个索引从零(0)开始,但是 数组给出数组的实际计数。
例如,考虑以下整数数组:
int[] numbers = {40, 55, 63, 17, 22, 68, 89, 97, 89}
因此,如果我们要为此数组运行一个循环,如:
for(int i=0; i<numbers.length; i++){
//this loop runs 9 times
}
如果上述循环i
已初始化为0
,并且i
可以达到的最大值是8
,但是该循环将运行9次,因为如果您将所有计数都计算在内从0
到8
的方式中,您得到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