Given:



public class Test {

    static boolean bVar;

    public static void main(String[] args) {

        boolean bVar1 = true;
        int count = 8;
        do {
            System.out.println("Hello Java! " + count);
            if (count >= 7) {
                bVar1 = false;
            }
        } while (bVar != bVar1 && count > 4);
        count -= 2;
    }
}

What is the result?

A.

Hello Java! 8
Hello Java! 6
Hello Java! 4

B.

Hello Java! 8
Hello Java! 6

C.

Hello Java! 8

D. Compilation fails

題解

這題程式的邏輯還蠻混亂的,真正在寫程式的時候不會寫出這種爛code。首先這邊要知道,類別變數bVar在沒有指定其初始值的狀況下,預設會是false,所以根據第14行的while條件,可以知道當bVar1為false的時候,條件式就不成立了,迴圈也不會繼續執行。

再來看count這個變數,count在do-while迴圈內並沒有做任何的更動,因此第14行的while條件中的count大於4是永遠成立的。

第11行的if在迴圈第一次執行的時候就會成立,因此會將bVar1設成false,迴圈只執行一次就結束了。最後「Hello Java! 8」只輸出了一次。