在for循环中初始化变量

时间:2019-09-12 23:18:41

标签: java

如果我在代码中输入单词“ 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");
  }

}

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。