Given the code fragment:
int row = 10;
for (; row > 0;) {
int col = row;
while (col >= 0) {
System.out.print(col + " ");
col -= 2;
}
row = row / col;
}
What is the result?
A.
10 8 6 4 2 0
B.
10 8 6 4 2
C. AnArithmeticException is thrown at runtime
D. The program goes into an infinite loop outputting: 10 8 6 4 2 0. . .
E. Compilation fails
題解
第13行的for迴圈會在row變數的值大於0的時候執行。
第一次執行for迴圈,row = 10、col = 10,所以while迴圈會重複執行,依序印出「10 8 6 4 」……,直到col變數的值小於0。最後一次執行while迴圈時,col的值為-2,小於0了,所以跳出while迴圈。
接著改變row的值為10/-2=-5,然後準備進入下一次的for迴圈。然而,此時row小於等於0了,因此會直接跳出for迴圈。