【发布时间】:2020-02-24 04:14:36
【问题描述】:
int[] a = {1, 2, 3,4,1};
for (int n: a) {
a[n] = 0;
}
for (int n: a) {
System.out.print(n);
}
当我将所有数组元素设为 0 时,每个循环都会显示一些意想不到的结果。而不是显示所有的“0”,而是给出类似“00301”的输出。无法理解这是如何工作的?
【问题讨论】:
-
我正在尝试使用 java,但在我认为的任何语言中,每个循环的工作都是相同的
-
它不是 C#,也不是 C++。可能是Java?你知道你在用什么语言工作吗?不管它是什么,我很确定它不会像你想象的那样做。请注意,您正在迭代一个数组并将数组元素的值用作数组的索引。使初始值之一变大(例如,10)并观察会发生什么
-
a[n] = 0;行的代码不正确。它不会使索引元素为零,但会使当前值索引处的元素为零。如果a[n] = 0;不存在,n的值将在迭代内部为1, 2, 3, 4 , 1。尝试基于索引的循环将数组项设置为零for(int i=0; i<a.length;i++) {a[i]=0;}