請寫出寫明這段程式碼輸出什麼?
/** * @author 面试专栏 * @date 2021/7/11 13:57 */ public class Test1 { public static void main(String[] args) { //输出什么? test(); } public static void test() { for (int i = 4; i > 0; i--) { int j = 0; do { j++; if (j == 2) { break; } } while (j <= i); System.out.print(j); } } }
看到這題,很多人會覺得太簡單了。 其實這題檢視三個知識點;
for
循環
4321
1232
2211
2222
你觉得是哪个?还是觉得都不是?
do...while循环是while循环的变种,在检查条件是否为真之前,该循环其实已经执行过一次了,然后在检查条件是否为真,如果为true,就重复执行这个循环。注意:只要循环体中执行break
后也会结束循环。
for(表达式1;表达式2;表达式3){ //循环体 }
这个循环体执行步骤如下:
return
、break
關鍵字。 #第一次進入for迴圈體時, i=4,然後計入do...while循環體,此時j=0,然後這個循環一直執行j ,直到j=2或j>i的時候退出循環體,顯然此時j=2,也就是此時輸出的是2。
下次for迴圈時,i=3,同理輸出還是2,
下一次for迴圈時,i=2,同理輸出依然是2,
#下次for迴圈時,i=1,同理輸出結果是2,此時執行foe迴圈的i--操作,i=0,不滿足i>0的條件了,此時for迴圈退出。
所以,最後輸出結果為:2222
。
在許多公司的筆試題中,千萬別小看,都是有坑的,一不小心自己就掉進去了。遇到這種關於循環的筆試題,建議,自己冷靜思考,一步一步來。
在筆試中,程式碼這塊,越是看起來簡單的題目,越不能掉以輕心。
以上是餓了麼筆試題,看似簡單,難倒一批人的詳細內容。更多資訊請關注PHP中文網其他相關文章!