java为什么循环之前索引会增加
在我想要它之前/在它执行整个for循环块之前,我无法理解为什么for循环计数器会增加。我已经在代码中添加了用于调试的打印语句,下面是代码:
public void findSubSeq() {
temp = new ArrayList<Integer>();
temp.add(vals.get(0));
for (int i = 0; i < (vals.size()-2); i++) {
System.out.println(i + " index in array, for");
if (vals.get(i) < vals.get(i++)) {
System.out.println(i + " index in array, if 1");
temp.add(vals.get(i++));
System.out.println(i + " index in array, if 2");
System.out.println(this.getlargest());
}
else {
System.out.println(i + " index in array, else 1");
compareALs();
System.out.println(i + " index in array, else 2");
temp.add(vals.get(i++));
System.out.println(i + " index in array, else 3");
System.out.println(this.getlargest());
}
}
}
在代码运行过程中,我们可以看到计数器i在for循环结束之前增加。我真的很困惑。我还尝试了一个for-each循环,得到了类似的结果。 以下是跑步记录: 子阵列创建之前
在菲拉尔之前
输入文件:inp
[1,2,3,0,4,5]
在找到subseq之前
数组中的0索引,用于
数组中有1个索引,否则为1
数组中有1个索引,否则为2
数组中的索引为2,否则为3
[1]
3数组中的索引,用于
4数组中的索引,否则为1
4数组中的索引,否则为2
数组中的索引为5,否则为3
[1]
# 1 楼答案
语句类似于
x < x
,因为增量在get
调用之后累积使用
如果要比较第i个元素和第i+1个元素
第二个:在一个循环中,有3个增量}循环中,第二个在{}循环中,第三个在{}循环中。这是你计划的吗
i
,在一个案例中是i
。一个在{# 2 楼答案
您有
vals.get(i++)
,它增加了i
。以这种方式使用时,++
是一个后增量运算符# 3 楼答案
您确实需要避免在循环中使用i++。这就是导致索引变量在您不期望的情况下递增的原因。例如,您的代码执行以下操作:
我想你真的想这么做:
类似地,当您添加到temp时,您确实不想使用i++,您需要: