我有一个大小为4的数组,我想检查该数组是否包含数字8(显然不是,数字仅用于测试)。
在for循环中,j从0变为3,所以循环中j的最终值为3。但是,我不理解为什么循环之后j 的值是更改为4,为什么还不是3?
public class Test {
public static void main (String[] args) {
int[] a = new int[4];
a[0] = 2;
a[1] = 3;
a[2] = 4;
a[3] = 5;
int n = a.length; // n = 4
int number = 8;
int j;
for (j = 0; j < n; j++) {
if (a[j] == number) {
System.out.println("The number is at place " + j);
break;
}
// Last value of j is 3:
System.out.println("Value of j after each iteration " + j);
}
// But here j is 4?
System.out.println("Value of j after the for-loop: " + j);
}
}
输出:
每次迭代后j的值0
每次迭代1后j的值
每次迭代2后j的值
每次迭代3后j的值
for循环后j的值:4
答案 0 :(得分:7)
是,因为在for循环的末尾,变量有一个增量。 for循环可以重写为:
int j = 0;
while(j < n) {
//code
j++;
}
因此,在上一次迭代中,j
将递增,它将转到条件,并且它将为false,因此将不输入for循环的主体。为了结束循环,j
必须大于或等于条件。
答案 1 :(得分:1)
编程新手?
for(initialization; booleanExpression; updateStatement) {
; // Body
}
步骤是
因此最终值应为4
答案 2 :(得分:1)
考虑一下...
这是您的for循环:
for (j = 0; j < n; j++){
//your code here
}
以j = 0开始for循环,每次循环访问时,都必须检查该值是否小于n(j 这就是n = 4的情况: 第一次迭代: 第二次迭代: 第三次迭代: 第4次迭代: 第5次迭代: 如您所见,当您的代码即将开始第五次迭代时,j变量现在等于4,因此它不通过j 但是,它仍然在第4次迭代中递增,因此您得到j = 4。 这就是我刚开始编码培训时老师对我的解释,希望它对您有所帮助!
j = 0;
0 < 4 == true;
// you execute your code
j++; //As you can see you increment before you continue to the next iteration
j = 1; // j now equals 1 because you incremented it on the previous iteration
1 < 4 == true;
// you execute your code
j++;
j = 2;
2 < 4 == true;
// you execute your code
j++;
j = 3;
3 < 4 == true;
// you execute your code
j++;
j = 4;
4 < 4 == false;
// loop ends