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

时间:2015-01-30 11:03:49

标签: 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("Match found!");

3 个答案:

答案 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循环之外声明我,要么按照你需要的方式放置括号。