当condition = false时,为什么while循环不会退出

use*_*671 1 java while-loop

我有一个循环运行,当它到达else语句时它应该停止运行.当我调试布尔功率确实更新但它仍然进入循环.我知道我可以使用System.Exit(0); 或休息; 但我会理解为什么它会继续运行错误的条件背后的逻辑?

public class Mmu {      
    //code omitted
    public static final Mmu MMU = new Mmu();

    public static void main(String[] args) {
        MMU.runProcesses();
        //code omitted
    }
        private Mmu() {
            //code omitted 
        }
    protected void runProcesses(){
        boolean power= false; // running processes,  normally this would start as false but I changed to test
        boolean twoFinished = false;
        boolean oneFinished = false;
        while (power = true) { //still entering this when power = false why
            twoFinished = MMU.processTwo.finished();
            oneFinished = MMU.processOne.finished();
            if (oneFinished = false) {
                MMU.processOne.thread();
            } else if (twoFinished = false) {
                MMU.processTwo.thread();
            } else {
                power = false;
                System.out.println("All processes Finished");
                //System.exit(0);
            }
        }   
    }
}
Run Code Online (Sandbox Code Playgroud)

感谢提前的任何建议.

Mar*_*oun 10

while (power = true) 
Run Code Online (Sandbox Code Playgroud)

是否总是 true因为你分配和不进行比较.

写:

while(power) 
Run Code Online (Sandbox Code Playgroud)

代替.


赋值的表达式返回赋值.

这就是我们==在比较booleans 时不喜欢使用的原因,它可能会导致这种错误.你可以简单地写if(someBoolean)而不是if(someBoolean == true).


Shr*_*ram 5

while (power = true) 在这里您正在使用分配操作员并power = true再次分配.使用while(power)