java - 为什么 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);
有用。为什么会这样?
解决方案
在第一种情况下,编译器所看到的只是您有 3 个条件语句为max
. 因此,它认为存在一条可能的路径,其中没有一个条件为真,在这种情况下max
不会被赋值。
您和我可以查看这些条件并理解其中一个必须是正确的。编译器不考虑这一点,它只是假设每个条件都可能为假。
当else
没有条件时,编译器可以保证至少有一个分配将执行。因此没有错误。
推荐阅读
- google-cloud-firestore - 尝试从我的 Google 云功能访问我的 Firestore 数据库,但我在服务器日志中不断收到错误消息
- r - 将 r 中的绘图保存在 PowerPoint 的图层中
- asp.net - 选择下拉列表错误 500 时,aspx.vb 页面不起作用
- python - 如何使用python按分钟制作日历事件图
- multithreading - 使用 IServiceScopeFactory 为多线程创建 Scoped DB 上下文的缺点
- android - 如何在我的应用程序中打开窗口并重定向到谷歌播放中的另一个应用程序下载页面
- python - 如何使用其中同一库中的多个函数为函数声明多个 kwargs
- javascript - reCAPTCHA v2 复选框小部件未在我的 REACT 应用程序上呈现
- c - 为什么在一行上声明变量会产生意想不到的结果?
- ios - iOS,我可以知道我是否有使用 CallKit 的来电吗?(不是网络电话)