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
Hello Java! 6
Hello Java! 4
B.
Hello Java! 8
Hello Java! 6
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」只輸出了一次。