如果我在代码中输入单词“ test”,则单词“ test”将输出9次(按预期)。如果我在代码中输入单词“ test 2”,则“ test 2”仅打印3次。为什么会这样(为什么它会打印3次而不是9次)?
for (int a1 = 3; a1 > 0; a1--) {
for (int a0 = 3; a0 > 0; a0--) {
System.out.println("test");
}
}
// Second version of code below
int a1 = 3;
int a0 = 3;
for (; a1 > 0; a1--) {
for (; a0 > 0; a0--) {
System.out.println("test 2");
}
}
答案 0 :(得分:3)
这两个代码不相等。内部循环的控制变量必须在每次(外部)迭代中初始化。因此,等效代码为:
int a1 = 3;
for (; a1 > 0; a1--) {
int a0 = 3;
for (; a0 > 0; a0--) {
System.out.println("test 2");
}
}
答案 1 :(得分:1)
格式更好:
for (int a1=3;a1>0;a1--)
{
for (int a0=3;a0>0;a0--)
{
System.out.println("test");
}
}
//Second version of code below
int a1=3;
int a0=3;
for (;a1>0;a1--)
{
for (;a0>0;a0--)
{
System.out.println("test 2");
}
}
本质上讲,您遇到的问题是因为在第二个示例中,您声明并实例化了for循环之外的变量。因此,当嵌套循环完成时,它会返回到外部循环。但是在嵌套循环之后a1不会重新实例化,并且跳过循环,这样a1的值已经是0。