你可以告诉我为什么我的第一次代码尝试没有工作:
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循环中定义变量,或者我在代码中遗漏了什么。
答案 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++;
}