在for
環和while
環路之間的等價而言,這是基本上此:
for (INIT; CONDITION; POSTOP) { INIT;
BODY; while (CONDITION) {
} BODY;
POSTOP;
}
(與我們不需要進入的範圍變化和其他類似的東西這裏)。
因此,與for/while
解決方案來解決你的問題,你可以使用類似:
for (int i = 0; i < 5; i++) {
int j = i;
while (j < 5) {
System.out.print("*");
j++;
}
System.out.println();
}
它有時是有益的,通過在你的腦袋的代碼運行,用鋼筆和一點點紙保持變量,如:
i j output
--- --- ------
如果你只是在你的HEA「執行」代碼的每一行(無論是你原來還是我for/while
變體) d幾次迭代,你應該看到發生了什麼。而且,如果你並排執行它們,你會看到兩個變體之間的等同性。
基本上,外循環從0到4進行計數(迭代),運行內循環,然後輸出換行符。
對於每個那些迭代中,內循環計數從i
至4以下,一個*
每次(沒有換行符)輸出。
因此,在第一次外循環迭代中,內循環從0
運行到4
,輸出五顆星。
在第二次外循環迭代中,內循環從1
運行到4
,輸出四顆恆星。
依此類推,到最後的外環迭代,其中i
是4
,所以內循環從4
運行到4
,輸出一個星。
在筆和紙的方法方面,你會得到的東西大致如下:
i j output
--- --- ------
0 0 *
0 1 *
0 2 *
0 3 *
0 4 *
\n
1 1 *
1 2 *
1 3 *
1 4 *
\n
2 2 *
2 3 *
2 4 *
\n
3 3 *
3 4 *
\n
4 4 *
\n
您提供的代碼甚至不包含嵌套的「while」循環。請添加一個。 – Tdorno 2015-03-03 04:25:47
時間做一些桌面檢查。拿出一支筆和一張紙,走路的代碼,更新你的價值... – MadProgrammer 2015-03-03 04:26:54
或比筆和紙,斷點更好! – 2015-03-03 04:31:51