这是代码。我试图解决它,但我无法理解它的输出是111111?
public class Test {
public static void main(String[] args) {
int list[] = {1, 2, 3, 4, 5, 6};
for (int i = 1; i < list.length; i++)
list[i] = list[i - 1];
for (int i = 0; i < list.length; i++)
System.out.print(list[i] + " ");
}
}
答案 0 :(得分:1)
for (int i = 1; i < list.length; i++)
list[i] = list[i - 1];
相当于:
list [1] = list [1-1] = list [0] = 1
list [2] = list [2-1] = list [1] = 1
list [3] = list [3-1] = list [2] = 1
list [4] = list [4-1] = list [3] = 1
list [5] = list [5-1] = list [4] = 1
知道了吗?
答案 1 :(得分:1)
输出为1 1 1 1 1 1
,因为第一个for
语句循环遍历一个名为list
的数组(即{1, 2, 3, 4, 5, 6}
)并用前一个替换每个一,从第二个开始(索引1
;或者,如某些人所说,第一个“真正的”第一个是第0个......我离题了)。因此第二个(索引1
)项目的当前值(2
)被第一个(索引0
)项目的值替换,即1
:( {{1} } list[i] = list[i - 1];
)。这继续沿着整数数组向下,直到我们到达i = 1
的末尾。当我们用前面的值替换每个值时,它们最终都会变成相同的值 - 数组中第一个项的值,即list
。最后,我们为1
:list
提供此值。
下一个{1, 1, 1, 1, 1, 1}
语句只会打印出更新后的for
的每个值,然后是空格:list
。因此,正如您所看到的,运行此代码的结果是打印出System.out.print(list[i] + " ");
。
只是为了以更直观的方式驱动点回家,让我们只绘制1 1 1 1 1 1
数组随时间变化的值:
list
我当然希望能帮助您更好地理解这里的概念。祝你好好参加其他考试!
答案 2 :(得分:0)
for (int i = 1; i < list.length; i++)
list[i] = list[i - 1];
这段代码导致列表中所有项目的值为1。
When i = 1, list[1] = list[0] = 1;
when i = 2, list[2] = list[1] = 1; //not 2 because it is already overrided when i = 1.
....持续一个。
P / S:在提问之前,尝试逐步理解代码。
答案 3 :(得分:0)
这都是因为这个循环,
for (int i = 1; i < list.length; i++)
list[i] = list[i - 1];
发生的事情是,您的第一个值是1
,按照循环它将该值分配给list
数组的相应第二个元素。
这意味着如果您的列表应该 10 作为此类数组的第一个元素
int list[] = {10, 2, 3, 4, 5, 6};
它会打印10,10,10,10,10,10
答案 4 :(得分:0)
您好我会尝试解释此代码段中发生的事情
int list[] = new int[6];
list[0] = 1;
list[1] = 2;
list[2] = 3;
list[3] = 4;
list[4] = 5;
list[5] = 6;
for (int i = 1; i < list.length; i++)
list[i] = list[i - 1];
此行等同于以下代码
list[1] = list[0];
list[2] = list[1];
list[3] = list[2];
list[4] = list[3];
list[5] = list[4];
此循环等效于以下代码
list[0] = 1
因为 list[1] = 1;
list[2] = 1;
list[3] = 1;
list[4] = 1;
list[5] = 1;
for (int i = 0; i < list.length; i++)
System.out.print(list[i] + " ");
}
}
等同于以下
isSelected()
这就是你获得输出的原因
答案 5 :(得分:0)
如果您不熟悉编程,打印调试可能是了解程序运行情况的绝佳方式。我已经在你的程序中添加了一堆打印语句,尝试运行它,看看你是否能理解结果:
var text = "asd^dfdf^dsfgdsfg^zdfsd^sdfsdf^dfsdf^dsfsdf^dfsdf^dfsf^sdfsdf",
temp = text.split('^');
for (i = 0; i < temp.length; i += 5) {
passfun(temp.slice(i, 5 + i).join('^') + ( i + 5 < temp.length ? '^' : ''));
}
我通常不会将这么多用于简单的循环,但我想在循环运行时向您展示访问值的不同方法。
对于控制台中循环的每次迭代,您将得到类似的内容,它会引导您完成值:
循环编号1
i = 1
list [i] = 2
的值i - 1 = 0
所以我在这个迭代的列表中访问元素0。
列表中的值[i - 1] = 1
循环结束1
答案 6 :(得分:0)
在这里看看我的答案:
Why am I not getting the output I am supposed to be?
无论如何......答案很简单......
在第一个循环中,打印您的阵列,您将看到阵列发生了什么事
像这样的东西:
for (int i = 1; i < list.length; i++){
list[i] = list[i - 1];
System.out(list);
}
答案 7 :(得分:0)
正如有人发布的那样,你的for循环导致了这个结果(11111)。你还提到你的问题就像&#34;它将值存储到一个数组中?&#34;。为了最好地理解你的问题,就像你试图从数组中获取值并将它们存储到另一个数组中一样。如果是这样,这可能是其中一个选择。
public static void main(String []args){
int[] list = {1, 2, 3, 4, 5, 6};
int[] myList = new int[list.length];
for (int i=0; i<list.length; i++){
myList[i] = list[i];
}
for (int i = 0; i < list.length; i++)
System.out.print(myList[i] + " ");
}
答案 8 :(得分:0)
int list[] = {1, 2, 3, 4, 5, 6};
for (int i = 1; i < list.length; i++) {
list[i] = list[i - 1];
}
当i为1时,您指定list[1] = list[0]
,此处列表[0]值为1
然后数组更新{1, 1, 3, 4, 5, 6}
,再次循环
当我为2时,您指定list[2] = list[1]
,此处列表[1]值为1
然后数组更新{1, 1, 1, 4, 5, 6}
,再次循环
这样,数组就会覆盖{1, 1, 1, 1, 1, 1}