Java 重复循环练习,初学者需要学习建议

Java 重复循环练习,初学者需要学习建议,java,arrays,sorting,Java,Arrays,Sorting,理解for循环中的-1,需要对for和进行详细解释(如果包含行代码) int[] array = { 2, 5, 1, 2, 3, 5 }; Arrays.sort(array); // why does this start counting from 1, and if l put 0 it goes to error, out of bounds? for (int i = 1; i < array.length; i++) { if (array[i] == ar

理解
for
循环中的
-1
,需要对
for
进行详细解释(如果包含
行代码)

int[] array = { 2, 5, 1, 2, 3, 5 };

Arrays.sort(array); 

// why does this start counting from 1, and if l put 0 it goes to error, out of bounds?
for (int i = 1; i < array.length; i++) { 

    if (array[i] == array[i - 1]) {        // - 1?
        System.out.print(array[i]);
    }
}
int[]数组={2,5,1,2,3,5};
数组。排序(数组);
//为什么从1开始计数,如果我把0放进错误,超出范围?
对于(inti=1;i
它本身没有什么问题

它只是使迭代从
i=1
开始,直到数组的长度,但由于数组中的索引是基于零的,因此在获取值时必须对其进行偏移

这就是为什么
array[i-1]


如果你把
i=0
,那么你还必须将结束条件更改为
array.length-1
,并且你必须通过
array[i]
来访问值,以避免越界。

对于这样的问题,一次只取一行代码,并尝试按照它所做的操作

这里要做的第一件事是创建一个数组,然后对它进行排序。在调用
array.sort(array)
之后,您的
array
将包含以下内容:

index      0 1 2 3 4 5
----------------------
contents   1 2 2 3 5 5
请记住,数组的索引为零-这意味着第一个元素位于索引0处。(数组的内容无关紧要,它是您要注意的索引。)

数组的索引不能小于零,也不能大于其长度-1。例如,这意味着不能使用-1作为索引,因为它小于0。也不能使用6作为索引,因为6大于数组(6)的长度减1

在for循环的初始化中,第一次迭代将
i
设置为等于1。虽然非传统,但它是完全合法的。这只是表示我们将从数组中的哪个索引开始。因此,对于循环的第一次迭代,
array[i]
将指向值2,
array[i-1]
将指向值1

index      0 1 2 3 4 5
----------------------
contents   1 2 2 3 5 5
i            ^
i-1        ^
现在,如果将
i
设置为从索引0开始,该怎么办?那么,
array[i]
将指向第0个索引(值1)。。。但是
数组[i-1]
指向什么

index      0 1 2 3 4 5
----------------------
contents   1 2 2 3 5 5
i          ^ 
i-1      ^

它指向索引-1。由于数组的索引不能为-1,这将导致IndexOutOfBoundsException。希望这是有道理的

关于崩溃:如果你从
i=0
开始,它将在第一个循环中出界,在
数组[i-1]
,因为那时
i=0
,所以
i-1
将使
-1
:出界。是的,因为5-4将给出-1,是吗?
5-4
永远不会出现,因为您的代码中根本没有
4
i
是唯一因循环而改变的变量。如果以
0
开头,如下所示:
for(inti=0;i
,那么我的第一条评论中的情况就会出现:如果
i
0
,那么你会得到:
数组[0-1]
,有效地访问以下数组索引:
数组[-1]
,这是无效的。正如gtgaxiola所说,数组是零索引的,第一个键从
0
开始。下面的任何内容都会导致索引越界异常。打个比方,当i=1(从1到count,这是数组中的数字5)然后变为6(这是array.length)。在if block(array[i]现在是5,1,2,3,5==到array(i-1),也就是5,1,2,3,5现在是-1?@Cleverson否,因为您有
数组。sort(array)
。这意味着值是按数字顺序排列的
{1,2,2,3,5,5}