我很难理解该数组的工作原理。我已经完成了System.out.print并意识到新数组的打印方式如下:{4,2,3,0,2},{4,2,3,0,3},{4,2,3, 0,0}。为什么只替换数组中的最后一位?每次分配新数字时,[value]都不会替换吗?
int [] = {4, 2, 3, 0, 1};
int count =0;
int value = arr[0];
while (arr[value] > 0){
count++;
arr[value] = arr[ arr[value] ];
}
System.out.println(count);
答案 0 :(得分:0)
因为您的迭代器(表示为value)用4初始化,并且再也不会更改。 4是数组中的第五个元素。 看一下第3行
答案 1 :(得分:0)
您一次设置value
,下面一行。它将始终设置为4
,因为这是arr[0]
的值。
int value = arr[0];
这里是对循环的较小重写,以说明它在做什么。我只用arr[value]
代替了4
:
int[] arr = {4, 2, 3, 0, 1};
while (arr[4] > 0) {
arr[4] = arr[arr[4]];
}