变量可能尚未初始化,但应该是因为 if else if
Variable might not have been initiialized but should be because of an if else if
here is the deal :
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
,但在不了解更多情况的情况下,我不想再做任何假设。
一般来说,编译器不会寻找二级结果。也就是说,它们会告诉您变量是否从未被赋值,正如您在此处看到的那样,但它们 "smart" 不足以推断它们是否会被赋值。
考虑以下代码块,它说明了与您看到的相同的错误,但更加简洁:
x = 0
if(x == 0) {
y = 10;
}
print(y);
x
将 始终 为零,因此 if
块将始终执行,但(大多数,包括你的)编译器将无法检测那个。他们只会看到一个未初始化的 y
变量被无缘无故地使用。简单的解决方案是用默认值初始化 y
。或者,您可以在 else
块中抛出异常,以指示发生了意外情况,或者操作 运行 出现故障。再次根据语言,该异常应该算作退出路径,因此可以像您看到的那样逃避任何更多检查。
这只是环境问题。
here is the deal :
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
,但在不了解更多情况的情况下,我不想再做任何假设。
一般来说,编译器不会寻找二级结果。也就是说,它们会告诉您变量是否从未被赋值,正如您在此处看到的那样,但它们 "smart" 不足以推断它们是否会被赋值。
考虑以下代码块,它说明了与您看到的相同的错误,但更加简洁:
x = 0
if(x == 0) {
y = 10;
}
print(y);
x
将 始终 为零,因此 if
块将始终执行,但(大多数,包括你的)编译器将无法检测那个。他们只会看到一个未初始化的 y
变量被无缘无故地使用。简单的解决方案是用默认值初始化 y
。或者,您可以在 else
块中抛出异常,以指示发生了意外情况,或者操作 运行 出现故障。再次根据语言,该异常应该算作退出路径,因此可以像您看到的那样逃避任何更多检查。
这只是环境问题。