Java 将符号从for循环向下传递到if语句

Java 将符号从for循环向下传递到if语句,java,if-statement,for-loop,Java,If Statement,For Loop,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("M

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!");

这两个代码段都是错误的,应该是:

if (i == 2)
    System.out.println(i);

条件之后不应该有分号

第一个代码段导致System.out.printlni之后的编译错误;在循环之外,因此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);

所以,事实上,我不存在于你试图打印它的范围内。要么在for循环之外声明i,要么按照需要的方式放置括号。

您的代码似乎非常糟糕。如果不打算使用这些if语句,为什么还要添加它们?你知道分号终止了if语句,我希望?…我很愚蠢。我的大脑一半是python一半是java atm。谢谢你澄清了这一点,现在变得更有意义了。
int[] myAry = {1, 2, 3};
for (int i : myAry){
  if (i == 2){}
}
    System.out.println(i);