我有一个循环运行,当它到达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).
| 归档时间: |
|
| 查看次数: |
205 次 |
| 最近记录: |