for循环使用with数组访问java中数组元素的逻辑
Logic of for loop using with array to access elements of the array in java
我的代码使用 for 循环访问数组元素。程序的输出是 [19,17,15]
,它们是数组 int a[] = { 12, 15, 16, 17, 19, 23 }
的元素。写入以下代码后的输出:
public class Tester {
public static void main(String s[]) {
int a[] = { 12, 15, 16, 17, 19, 23 };
for (int i = a.length - 1; i > 0; i--) {
if (i % 3 != 0) {
--i;
}
System.out.println(a[i]);
}
}
}
算法:
迭代 1:i=5
所以 a[5]=23
。 “if 语句”为真并 --i
执行。所以 i=4
。因此,a[4]=19
将打印为输出中的第一个元素。
迭代 2:i=3
所以 a[3]=17
。 “if 语句”再次变为 true 并且 --i
应该执行但是它跳过了那个条件,因为我尝试使用调试工具来查看它是如何工作的。输出是 a[3]=17
我认为这是错误的。
你能帮我理解为什么输出 17 吗?在我看来,它应该跳过那部分。
在迭代 2 中,i=3 条件为假,因为 3 % 3 = 0
这是一步一步的解释。 (i % 3 != 0)
检查是否 i is not divisible by 3
。另请注意,在这种情况下,您的 post 和 i
的 pre-decrements 不相关,因为无论它们如何递减,结果都是相同的。
i = 5;
i not divisible by 3 so i-- = 4
print a[4] = 19
i-- at end of loop = 3
i is divisible by 3 so i remains 3
print a[3] = 17
i-- at end of loop = 2
i not divisible by 3 so i-- = 1
print a[1] = 15
i-- = 0 so loop terminates.
我的代码使用 for 循环访问数组元素。程序的输出是 [19,17,15]
,它们是数组 int a[] = { 12, 15, 16, 17, 19, 23 }
的元素。写入以下代码后的输出:
public class Tester {
public static void main(String s[]) {
int a[] = { 12, 15, 16, 17, 19, 23 };
for (int i = a.length - 1; i > 0; i--) {
if (i % 3 != 0) {
--i;
}
System.out.println(a[i]);
}
}
}
算法:
迭代 1:
i=5
所以a[5]=23
。 “if 语句”为真并--i
执行。所以i=4
。因此,a[4]=19
将打印为输出中的第一个元素。迭代 2:
i=3
所以a[3]=17
。 “if 语句”再次变为 true 并且--i
应该执行但是它跳过了那个条件,因为我尝试使用调试工具来查看它是如何工作的。输出是a[3]=17
我认为这是错误的。
你能帮我理解为什么输出 17 吗?在我看来,它应该跳过那部分。
在迭代 2 中,i=3 条件为假,因为 3 % 3 = 0
这是一步一步的解释。 (i % 3 != 0)
检查是否 i is not divisible by 3
。另请注意,在这种情况下,您的 post 和 i
的 pre-decrements 不相关,因为无论它们如何递减,结果都是相同的。
i = 5;
i not divisible by 3 so i-- = 4
print a[4] = 19
i-- at end of loop = 3
i is divisible by 3 so i remains 3
print a[3] = 17
i-- at end of loop = 2
i not divisible by 3 so i-- = 1
print a[1] = 15
i-- = 0 so loop terminates.