【发布时间】:2015-06-05 17:42:23
【问题描述】:
有人可以请教我以下问题:
public class Loopy {
public static void main(String[] args)
{
int[] myArray = {7, 6, 5, 4, 3, 2, 1};
int counterOne;
for (counterOne = 0; counterOne < 5; counterOne++) {
System.out.println(counterOne + " ");
}
System.out.println(counterOne + " ");
int counterTwo = 0;
for (counterTwo : myArray) {
System.out.println(counterTwo + " ");
}
}
}
在for循环中,我们在循环外声明counterOne,并在循环内使用它。这是正确的,只要我们在循环完成后不使用counterOne即可。
在 foreach 循环中,我们还在循环外声明counterTwo,然后在循环内仅使用它。但是,在这种情况下会引发错误:
“线程“main”中的异常 java.lang.RuntimeException:无法编译 源代码 - 找不到符号符号:类计数器两个位置:类 package1.Loopy"
你能帮我理解为什么吗?
两者的唯一区别是counterOne被初始化为零,然后被增量赋值(小于5)。
在foreach循环中,counterTwo被一一赋值,每个数组项。
如果我们在第二个 for 循环中进行此调整,程序就可以工作:for(int counterTwo : myArray),而第一个 for 在这两种情况下都可以工作:
- 现有的
for (counterOne = 0; counterOne < 5; counterOne++)
【问题讨论】:
-
我重命名了您代码中的变量,以方便可能遇到此问题的其他人阅读(我个人从未尝试过,发现它很有趣)。