在哪里为每个循环定义变量?

时间:2014-06-01 12:17:52

标签: java

你可以告诉我为什么我的第一次代码尝试没有工作:

public void listAllFiles()
{
    for(String filename : files)
    {
        int position = 0;
        System.out.println(position + ": " + filename);
        position = position + 1;
    }
}

它将打印位置保持在0而没有迭代位置

但在我这样做之后似乎有效:

public void listAllFiles()
{
     int position = 0;
     for(String filename : files)
     {               
           System.out.println(position + ": " + filename);
           position = position + 1;
     }
 }

我不明白为什么位置+ 1没有被执行,是因为我们不是要在for循环中定义变量,或者我在代码中遗漏了什么。

3 个答案:

答案 0 :(得分:7)

在第一个代码中,您重新声明/初始化int,因此每次循环时,它都会将值重置为默认值。在第二个中,从循环中取出初始化会使其无法重置。如果你在迭代,你应该总是这样:

    int x = 0;
    for(int y = 0; y<=10; y++)
    {
        //do something
        x++;
    }
    System.out.println(x); //10

答案 1 :(得分:2)

在循环中声明的变量只在那里可见,所以你声明变量,用0初始化它,然后增加变量然后忘记它的所有内容。

在循环的下一次迭代中,你再次声明它,用0初始化它,增加,遗忘等等。

如果要在循环运行之间保留变量,则需要在循环之外声明它。

答案 2 :(得分:0)

我们在FOR循环范围内的语句在每次迭代时都会执行。 因此,如果我们不想在每次迭代时重新初始化变量,则应在FOR循环之外声明变量。 以下是我们可以实现的简短方法:

for(int x = 0; x<=10)
{
    //do something
    x++;
}