似乎是" for循环中的符号"循环本身就是本地的。 有没有办法传递有关当前符号的信息,例如if语句?
例如,这会产生错误:
int[] myAry = {1, 2, 3};
for (int i : myAry)
if (i == 2);
System.out.println(i);
虽然这不是:
int[] myAry = {1, 2, 3};
for (int i : myAry)
if (i == 2);
System.out.println("Match found!");
答案 0 :(得分:4)
两个代码段都错了,应该是:
if (i == 2)
System.out.println(i);
和
if (i == 2)
System.out.println("Match found!");
病情发生后不应该有半结肠。
第一个代码段导致编译错误,因为System.out.println(i);
在循环之外,所以i
未定义。
第二个片段不会导致编译错误(因为它不会尝试访问i
),但无论if条件的评估结果如何都会执行,因为它在for loop。
答案 1 :(得分:2)
有些方法:
如果您不想使用大括号,请确保for
之后的单个可执行块。
int[] myAry = {1, 2, 3};
for (int i : myAry)
if (i == 2) // Remove the semi-colon. Seems inadvertently added.
System.out.println(i);
使用大括号。
int[] myAry = {1, 2, 3};
for (int i : myAry){
if (i == 2); // Assuming this was purposeful, seems unlikely though.
System.out.println(i);
}
答案 2 :(得分:1)
您的第一个代码基本上是:
int[] myAry = {1, 2, 3};
for (int i : myAry){
if (i == 2){}
}
System.out.println(i);
所以,实际上,我并不存在于您尝试打印它的范围内。要么在for循环之外声明我,要么按照你需要的方式放置括号。