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。我不知道该怎么做才能解决这个问题。
你为什么不在if之前写一个petiteComm = 0。 那应该有所帮助。
很难知道你在这里使用的是什么语言,但无论如何,听起来你高估了编译器。
正如其他人提到的,你需要给它一个初始值。你可以按照你认为合适的方式来做,但是看看你给我们的语法,
petiteComm = 0;
应该工作。我可能很想将它设置为
null
或 -1
,但在不了解更多情况的情况下,我不想再做任何假设。
一般来说,编译器不会寻找第二层结果。也就是说,它们会告诉您变量是否从未被赋值,正如您在此处看到的那样,但它们不够“聪明”,无法推断它们是否会被赋值。
考虑以下代码块,它说明了与您所看到的相同的错误,但更加简洁:
x = 0
if(x == 0) {
y = 10;
}
print(y);
x
将 always 为零,因此 if
块将始终执行,但(大多数,包括你的)编译器将无法检测到它。他们只会看到一个未初始化的 y
变量被无缘无故地使用。简单的解决方案是使用默认值初始化y
。或者,您可以在 else
块中抛出异常,以指示发生了意想不到的事情,或者操作运行不正常。再次根据语言,该异常应该算作退出路线,因此可以像您所看到的那样逃避任何更多检查。
这只是环境问题。