JAVA:为什么eclipse会将我的第二个else-if语句称为“死代码”?

Ale*_*ang -3 java eclipse if-statement

我正在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++;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Kev*_*sen 5

相关的if和else-if检查为:

if (currentRunning == null && currentBlocked == null) {
   ...
}
else if (currentRunning.CPUburstRemaining != 0 && currentBlocked == null) {
   ...
}
else if (currentBlocked.IOburstRemaining != 0 && currentRunning == null) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

您的第一个if-check将同时检查currentRunningcurrentBlocked两者null

如果不是这种情况,则将检查是否currentBlocked为,null并且使用currentRunning.CPUburstRemaining隐式表示currentRunning不能为null(否则NullPointerException将给出a)。

这两项检查后,我们因此知道currentRunning永远不可能null了,因为它要么已经进入了第一个if语句来,或将给予一个NullPointerExceptioncurrentRunning.CPUburstRemaining第一else if嵌段。

因此,您的&& currentRunning == null部分else if (currentBlocked.IOburstRemaining != 0 && currentRunning == null)始终是错误的,因此IDE将此视为无效代码。