public class Hello
{
public static void main(String args[])
{
int i = 1;
for(i; ;i++ )
{
System.out.println(i);
}
}
}
我想了解为什么上面的代码会出错:
不是(i ;; i ++)
的陈述
答案 0 :(得分:4)
因为i
第一个位置的原始for
不是声明。您可以在Java中的for
循环中声明和初始化变量。所以,我认为你想要像
// int i = 1;
for(int i = 1; ;i++ )
{
System.out.println(i);
}
如果您需要在循环后访问i
,也可以使用
int i;
for(i = 1; ; i++)
{
System.out.println(i);
}
甚至
int i = 1;
for(; ; i++)
{
System.out.println(i);
}
这由JLS-14.4. The for
Statement涵盖(部分)
首先执行ForInit代码执行for语句:
如果ForInit代码是语句表达式列表(§14.8),则表达式从左到右依次计算;它们的值(如果有的话)被丢弃。
答案 1 :(得分:2)
for语句开头的唯一i没有任何意义 - 这不是一个声明。通常,for循环的变量在for语句中初始化为:
for(int i = 1;; i++) {
System.out.println(i);
}
这将永远循环,因为没有测试可以突破for循环。
答案 2 :(得分:1)
将for循环更改为:
for(; ;i++ )
它将循环无限打印i。你的i不是boolean类型,你可以在for循环的条件下放置,for循环的格式如下:
for (init statement; condition; post looping)
所以在你的init语句中,你只有i,这不是一个有效的语句,因此你会从编译器中得到错误。