变量可能没有被初始化,但应该是因为 if else if

问题描述 投票:0回答:2
compteur = compteur + 1;
if ( compteur == 1 ) {
    petiteComm = commTotal;
    grandeComm = commTotal;
} else {
    if ( commTotal < petiteComm ) {
        petiteComm = commTotal; 
    }
    if ( commTotal > grandeComm ) {
         grandeComm = commTotal;
    }
}

它说 petiteComm 可能还没有被初始化,但这将是因为第一个 if,因为 compteur 将第一次为 1。我不知道该怎么做才能解决这个问题。

java variables
2个回答
0
投票

你为什么不在if之前写一个petiteComm = 0。 那应该有所帮助。


0
投票

很难知道你在这里使用的是什么语言,但无论如何,听起来你高估了编译器。

正如其他人提到的,你需要给它一个初始值。你可以按照你认为合适的方式来做,但是看看你给我们的语法,

petiteComm = 0;

应该工作。我可能很想将它设置为

null
-1
,但在不了解更多情况的情况下,我不想再做任何假设。

一般来说,编译器不会寻找第二层结果。也就是说,它们会告诉您变量是否从未被赋值,正如您在此处看到的那样,但它们不够“聪明”,无法推断它们是否会被赋值。

考虑以下代码块,它说明了与您所看到的相同的错误,但更加简洁:

x = 0

if(x == 0) {
    y = 10;
}

print(y);

x
always 为零,因此
if
块将始终执行,但(大多数,包括你的)编译器将无法检测到它。他们只会看到一个未初始化的
y
变量被无缘无故地使用。简单的解决方案是使用默认值初始化
y
。或者,您可以在
else
块中抛出异常,以指示发生了意想不到的事情,或者操作运行不正常。再次根据语言,该异常应该算作退出路线,因此可以像您所看到的那样逃避任何更多检查。

这只是环境问题。

© www.soinside.com 2019 - 2024. All rights reserved.