将符号从 for 循环传递到 if 语句
Passing down symbol from a for loop to an if statement
"for loop" 中的符号似乎是循环本身的局部符号。
有什么方法可以将有关符号当前代表什么的信息向下传递到例如 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!");
两个代码片段都是错误的,应该是:
if (i == 2)
System.out.println(i);
和
if (i == 2)
System.out.println("Match found!");
条件后不应有分号。
第一个片段导致编译错误,因为 System.out.println(i);
在循环之外,所以 i
未定义。
第二个片段不会导致编译错误(因为它不会尝试访问 i
),但无论 if 条件的评估结果如何都会执行,因为它是在 for 循环之外。
一些方式:
如果您不想使用大括号,请确保在 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);
}
你的第一个代码基本上是:
int[] myAry = {1, 2, 3};
for (int i : myAry){
if (i == 2){}
}
System.out.println(i);
所以,确实,i 不存在于您尝试打印它的范围内。要么在 for 循环之外声明 i,要么按照您需要的方式放置括号。
"for loop" 中的符号似乎是循环本身的局部符号。 有什么方法可以将有关符号当前代表什么的信息向下传递到例如 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!");
两个代码片段都是错误的,应该是:
if (i == 2)
System.out.println(i);
和
if (i == 2)
System.out.println("Match found!");
条件后不应有分号。
第一个片段导致编译错误,因为 System.out.println(i);
在循环之外,所以 i
未定义。
第二个片段不会导致编译错误(因为它不会尝试访问 i
),但无论 if 条件的评估结果如何都会执行,因为它是在 for 循环之外。
一些方式:
如果您不想使用大括号,请确保在
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); }
你的第一个代码基本上是:
int[] myAry = {1, 2, 3};
for (int i : myAry){
if (i == 2){}
}
System.out.println(i);
所以,确实,i 不存在于您尝试打印它的范围内。要么在 for 循环之外声明 i,要么按照您需要的方式放置括号。