【问题标题】:why outer for loop variable can't be used in inner for loop为什么外部for循环变量不能用于内部for循环
【发布时间】:2016-08-31 00:09:04
【问题描述】:

我正在编写以下代码:

int j =0;
for( j=0; j< 10;j++){
  System.out.println("Printing outer for loop :" +j);
  for(j; j < 8; j++)
  {
     System.out.println("Printing inner for loop" + j);
  }
}

Eclipse 显示以下错误:

Syntax error on token "j", ++ expected after this token

我不明白背后的原因。任何解释将不胜感激。谢谢

【问题讨论】:

  • 您希望j; 做什么?如果不想给j赋初值,就写for(; j &lt; 8; j++)
  • 原因是,for 循环语法无效,for(j; j &lt; 8; j++) 不是有效的 for 循环。
  • 我明白了。感谢您的反对票;)

标签: java for-loop


【解决方案1】:

for 循环的第一个参数是初始化语句 - https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html

for (initialisation; termination;
     increment) {
    statement(s)
}

for(j;j

请初始化上述for循环中的第一条语句。

【讨论】:

    【解决方案2】:

    循环不像函数那样孤立。

    【讨论】:

      【解决方案3】:

      j; 不是有效语句,这就是您的内部循环无法编译的原因。你不需要在里面写一个语句,你可以在内部循环中将“第一部分”留空:

      int j =0;
      for( j=0; j< 10;j++){
          System.out.println("Printing outer for loop :" +j);
          for(; j < 8; j++)
          {
              System.out.println("Printing inner for loop" + j);
          }
      }
      

      【讨论】:

        【解决方案4】:

        根据JLS 中的定义,for 循环声明的第一个“部分”ForInitlist of statement expressions or a local variable declarationj 不是语句表达式(赋值;前/后递增/递减;方法调用;新类初始化)或局部变量声明,因此它是无效语法。

        根据您要执行的操作,您可以省略它:

        for (; j < 8; j++)
        

        请注意,for 循环的所有三个“部分”都是可选的:例如,这很好:

        for (;;) {
        }
        

        (这只是一个无限循环)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-03-21
          • 1970-01-01
          • 1970-01-01
          • 2016-12-05
          • 2012-05-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多