首页 > 解决方案 > 为什么 else if 和 else 在这里表现不同?

问题描述

当我这样做时,

if(a>=b && a>=c) {
    max = a;

} else if (b>=a && b>=c) {
    max = b;

} else if (c>=a && c>=b) {
    max = c;
}
System.out.println(max);

它给出了一个错误(java:变量 max 可能没有被初始化),但是当我这样做时,

if(a>=b && a>=c) {
    max = a;

} else if (b>=a && b>=c) {
    max = b;

} else {
    max = c;
}
System.out.println(max);

有用。为什么会这样?

标签: javaif-statement

解决方案


在第一种情况下,编译器所看到的只是您有 3 个条件语句为max. 因此,它认为存在一条可能的路径,其中没有一个条件为真,在这种情况下max不会被赋值。

您和我可以查看这些条件并理解其中一个必须是正确的。编译器不考虑这一点,它只是假设每个条件都可能为假。

else没有条件时,编译器可以保证至少有一个分配将执行。因此没有错误。


推荐阅读