考虑以下方法:
void a ()
{
int x;
boolean b = false;
if (Math.random() < 0.5)
{
x = 0;
b = true;
}
if (b)
x++;
}
在x++
上我收到“局部变量可能尚未初始化”错误。很明显,x永远不会被初始化。除了初始化x之外,有没有办法抑制警告?感谢。
答案 0 :(得分:5)
不,Java
无法检查程序的所有可能代码路径,以确定变量是否已初始化,因此需要安全路径并发出警告。
所以不,你必须初始化你的变量才能摆脱这个。
答案 1 :(得分:2)
有一个:
void a () {
if (Math.random() < 0.5) {
int x = 1;
}
}
编译器不负责设计和测试算法。你是。
但也许你应该提出一个更实际的用例。你的例子并没有真正显示你的目标是什么。
答案 2 :(得分:1)
为什么不简单地使用
void a ()
{
int x;
boolean b = false;
if (Math.random() < 0.5)
{
x = 0;
b = true;
x++;
}
if (b) {
//do something else which does not use x
}
}
在代码中为什么要在第一个if块之外使用x,所有涉及x
的逻辑都可以在第一个if块中实现,我没有看到你需要的情况使用另一个if块来使用x。
编辑:或者您也可以使用:
void a ()
{
int x;
boolean b = (Math.random() < 0.5);
if (b) {
x=1
//do something
}
}