为什么while循环在条件= false时不退出
我有一个循环运行,当它到达else语句时它应该停止运行。当我调试布尔功率更新但它仍然进入循环。我知道我可以使用System.Exit(0);或休息;但我会理解为什么它会继续以假条件运行的逻辑?为什么while循环在条件= false时不退出
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);
}
}
}
}
感谢您的任何建议提前。
while (power = true)
是总是true
因为你分配和不进行比较。
写:
while(power)
代替。
分配的表达式返回分配值。
这就是为什么我们不喜欢使用==
当我们比较boolean
时,可能会导致这种错误。您可以简单地写if(someBoolean)
而不是if(someBoolean == true)
。
注意:OP在'if'和'else-if '条件 – 2014-10-28 07:39:12
只是向人解释,这也可以工作: while(power == true) – maslan 2014-10-28 07:40:35
谢谢,只是为了澄清if语句是否应该是if(power == true) – user1642671 2014-10-28 07:57:45
while (power = true)
这里您正在使用分配运算符并再次分配power = true
。使用while(power)
'power = true'是赋值,而不是比较;)。你需要'power == true',或者'while(power)'。 – theGreenCabbage 2014-10-28 07:37:06
'='是赋值运算符,'=='是比较运算符 – 2014-10-28 07:37:12
'while(power == true)'note double == == – 2014-10-28 07:37:12