在 do-while 迴圈中,若初始化 boolean flag = false 或 true,執行結果為何相同?while(flag) 與 while(!flag) 的含義是否固定?
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
boolean flag = false;
do {
System.out.println("請輸入數據:");
int num = input.nextInt();
if (num < 10) {
System.out.println("繼續執行:");
flag = true;
} else {
System.out.println("程序中止!");
flag = false;
}
} while (flag);
}
}
do-while 迴圈無論旗標初始值為何,都會無條件執行一次迴圈體,然後再根據條件判斷是否繼續。 因此初始 false 或 true 只影響第一次迭代後的判斷,不影響首次執行。若改用 while(flag) do {...}(即 while 迴圈),則初始值直接決定是否進入迴圈,行為將截然不同。
while(flag) 等價於 while(flag == true):旗標為 true 時繼續。while(!flag) 等價於 while(flag == false):旗標為 false 時繼續。旗標在迴圈體內被修改(如代碼中根據輸入賦值),才真正控制迴圈走向。