我尝试用Java编译这段代码:
class D
{
public static void main(String arg[])
{
f1();
}
static void f1()
{
int a;
int b=5;
for(;b<=10;b++)
a=b;
System.out.println(a);
}
}
Run Code Online (Sandbox Code Playgroud)
但是它会产生一个错误,表示:变量'a'可能尚未初始化.为什么会发生这种情况,尽管a在for循环中设置了?
循环可能无法运行(编译器不确定),因此a可能无法初始化.
这不会在循环中执行print语句,只是赋值:
for(;b<=10;b++)
a=b;
System.out.println(a); //this will only run after the loop.
Run Code Online (Sandbox Code Playgroud)
在上述情况下,如果b> 10循环之前那么a=b;将永远不会被执行,并且打印语句会得到未初始化a.
我认为你的意思是:
for(;b<=10;b++) {
a=b;
System.out.println(a);
}
Run Code Online (Sandbox Code Playgroud)
如果您打算a在循环后打印,请将其初始化为适当的值,例如int a = 0;.
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |