为啥外部for循环变量不能用于内部for循环
Posted
技术标签:
【中文标题】为啥外部for循环变量不能用于内部for循环【英文标题】: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 < 8; j++)
原因是,for
循环语法无效,for(j; j < 8; j++)
不是有效的 for 循环。
我明白了。感谢您的反对票;)
【参考方案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
循环声明的第一个“部分”ForInit
是list of statement expressions or a local variable declaration; j
不是语句表达式(赋值;前/后递增/递减;方法调用;新类初始化)或局部变量声明,因此它是无效语法。
根据您要执行的操作,您可以省略它:
for (; j < 8; j++)
请注意,for
循环的所有三个“部分”都是可选的:例如,这很好:
for (;;)
(这只是一个无限循环)
【讨论】:
以上是关于为啥外部for循环变量不能用于内部for循环的主要内容,如果未能解决你的问题,请参考以下文章