輸出是1 1 1 1 1 1
因爲第一for
語句被遍歷的陣列,命名list
,值(即{1, 2, 3, 4, 5, 6}
),並與前一個替換每一個,起始於第二一個(索引1
;或,正如有人所說,第一個「真正的」第一個是第0個......我離題了)。因此,第二個(索引1
)項目的當前值(2
)被第一個(索引0
)項目的值替換爲1
:(list[i] = list[i - 1];
其中i = 1
)。這繼續向下,直到到達list
的末尾。當我們用它之前的值替換每個值時,它們最終都會變成相同的值 - 即數組中的第一項,即1
。最後,我們的list
:{1, 1, 1, 1, 1, 1}
有這個值。
下一個for
聲明依次打印出更新的list
的每個值,然後依次打印一個空格:System.out.print(list[i] + " ");
。所以,如您所見,運行此代碼的結果是它打印出1 1 1 1 1 1
。
只是驅動點回家更直觀的方式,讓我們只映射出list
陣列的價值隨着時間的推移:
int i = 1; // i = 1
list[i] = list[i - 1]; // list[1] = list[1 - 1]; list[0] == 1
// list is now {1, 1, 3, 4, 5, 6}
i++; // i = i + 1 # i is now 2
list[i] = list[i - 1]; // list[2] = list[2 - 1]; list[1] == 1
// list is now {1, 1, 1, 4, 5, 6}
i++; // i = i + 1; i = 3
list[i] = list[i - 1]; // list[3] = list[3 - 1]; list[2] == 1
// list is now {1, 1, 1, 1, 5, 6}
i++; // i = i + 1; i = 4
list[i] = list[i - 1]; // list[4] = list[4 - 1]; list[3] == 1
// list is now {1, 1, 1, 1, 1, 6}
i++; // i = i + 1; i = 5
list[i] = list[i - 1]; // list[5] = list[5 - 1]; list[4] == 1
// list is now {1, 1, 1, 1, 1, 1}
i++; // i = i + 1; i = 6
i < list.length; // i == 6; list.length == 6; 6 < 6 == false
// exit the for loop
我當然希望可以幫助您瞭解在玩概念,此處略更好。祝你好運!
您對該代碼的作用有什麼瞭解? – Maljam
它的值存儲在一個數組中?我是一名編程初學者,這是我在測試中發現的其中一個問題。 –
嘗試在紙上找出它。它從元素1開始,其中包含2,並將其設置爲等於元素i - 1,其中包含1開始。等等。 – Logan