java - JAVA:为什么 Eclipse 将我的第二个 else-if 语句称为“死代码”?
问题描述
我在 Eclipse IDE 上用 JAVA 编写代码,但我的 if-else 语句有问题。从我的第三个外部“if”开始,我有两个“else-if”块,Eclipse 将我的第二个“else-if”称为死代码并跳过它——我使用 Eclipse 调试器检查了它,但我不知道为什么。Eclipse 一直建议我删除第二个 else-if 语句,这显着改变了我的代码。
如果有任何其他信息可以添加,请告诉我,并提前感谢所有帮助!
这是代码:
public static void eachCycleUni (Queue processes, int numProcesses, Process[] allProcesses, Process[] original) {
Queue<Process> readyProcesses = new LinkedList<Process>(); //Stores processes that are ready
for (int p = 0; p < allProcesses.length; p++) {
Process currentProcess = allProcesses[p];
while (terminatedProcesses != numProcesses) {
//Nothing --> Nothing or Nothing --> currentRunning
if (currentRunning == null && currentBlocked == null) {
....
}
//currentRunning --> --, or currentRunning --> currentBlocked, or currentRunning --> terminated
else if (currentRunning.CPUburstRemaining != 0 && currentBlocked == null) {
...
}
//THIS ELSE-IF
else if (currentBlocked.IOburstRemaining != 0 && currentRunning == null) {
...
}
cycleNumber++;
}
}
}
解决方案
相关的 if 和 else-if 检查是:
if (currentRunning == null && currentBlocked == null) {
...
}
else if (currentRunning.CPUburstRemaining != 0 && currentBlocked == null) {
...
}
else if (currentBlocked.IOburstRemaining != 0 && currentRunning == null) {
...
}
您的第一个 if-checks 将检查 bothcurrentRunning
和currentBlocked
are both null
。
如果不是这种情况,您将检查 if currentBlocked
isnull
并且使用currentRunning.CPUburstRemaining
隐式表示currentRunning
不能是null
(否则NullPointerException
会给出 a )。
因此,在这两个检查之后,我们知道它currentRunning
永远不会再存在null
了,因为它要么进入了第一个语句,要么在第一个块中if
给出了 a 。NullPointerException
currentRunning.CPUburstRemaining
else if
正因为如此,你的&& currentRunning == null
部分else if (currentBlocked.IOburstRemaining != 0 && currentRunning == null)
将永远是虚假的,所以 IDE 将其视为死代码。
推荐阅读
- python - 在 view.py 文件顶部与在每个函数中编写 import 有什么区别?
- php - is there an alternative for X_SUB_MSISDN?
- triggers - Incorrect space in cleartool trigger name prevent me from removing it
- c# - 具有单个参数的多个 GET() 方法导致 AmbiguousMatchException:请求匹配多个端点
- spring-boot - 我可以将 Xfire 与 SpringBoot 一起使用吗?
- laravel - 没有nodejs的laravel广播通知
- laravel - 无法使用路由在 Laravel 中使用编码的“/”获取获取参数
- vue.js - vuejs vue-cli 如何使用 console.log 而不会出现任何错误
- node.js - Get stdout and stderr of a nodejs application running in background as process
- python - 如何使用python从特定关键字中提取有限的数据行