考虑以下方法:
void a ()
{
int x;
boolean b = false;
if (Math.random() < 0.5)
{
x = 0;
b = true;
}
if (b)
x++;
}
关于x++
,我收到“本地变量可能尚未初始化”错误。显然,x永远不会未经初始化就使用。除了初始化x之外,还有什么方法可以抑制警告?谢谢。
[不,Java无法检查程序的所有可能代码路径来确定变量是否已初始化,因此它采取了安全途径并发出警告。
因此,您将必须初始化变量来摆脱此问题。
有一个:
void a () {
if (Math.random() < 0.5) {
int x = 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块中实现,我看不到需要使用另一个逻辑的情况如果使用x阻止。
编辑:或您也可以使用:
void a ()
{
int x;
boolean b = (Math.random() < 0.5);
if (b) {
x=1
//do something
}
}