我正在嘗試解決一些 Java 問題,我遇到了一個問題,要求我列印出 size 的鉆石n。
由于我對這個問題感到困惑,所以我決定查找其他人的解決方案,以了解如何解決這個問題。
順便說一句,2 號鉆石應該看起來像這樣。
##*##
#***#
##*##
但是,代碼的一部分確實讓我很困惑,那就是如何#以這種方式列印出來。
這是我為鉆石的左上角找到的,基本上就是這個:
##
#
下面是代碼:
public static void printDiamond(int k){
for(int i=1; i <= k; i ) {
for(int j = i; j <= k; j ) {
System.out.print("#");
}
System.out.println("");
}
}
k = 5 時的輸出:
#####
####
###
##
#
據我了解, intj是向上回圈的,因為它被宣告為iwhich 也向上回圈直到到達k.
因為回圈從 0 到 k,即 5,所以不應該列印出 1、2、3、4、5 顆鉆石嗎?
我期待輸出是這樣的:
#
##
###
####
#####
有人可以解釋我附加的代碼片段如何從上到下回傳輸出嗎?
uj5u.com熱心網友回復:
一個簡單的筆和紙練習將揭示細節。
for(int i = 1; i <= k; i ) {
for(int j = i; j <= k; j ) {
...
}
}
當i = 1,j從 運行1到k。因此,它將列印星空k時間。這就是您k在第 1 行獲得星星的方式。
當i = 2,j從 運行2到k。因此,它將列印星空k - 1時間。這就是你如何k - 1在第 2 行獲得星星。
等等...
當i = k,j從運行k到kwhich 是一次,因此你在最后一行只得到一顆星。
uj5u.com熱心網友回復:
的初始值j設定為遞增i,內回圈限制為固定值k。也就是說,第一輪列印#從 1 到 5(5 次),第二輪列印從 2 到 5,等等,列印次數遞減。
要以增加的方式列印下部,應將限制設定為i: for (int j = 1; j <= i; j 0) System.out.print("#")。
此外,內部回圈可以替換為String::repeat自 Java 11 以來可用的方法:
public static void diamond(int k) {
// upper part, decreasing # increasing *
for (int i = 1; i <= k; i ) {
System.out.println("#".repeat(k - i) "*".repeat(2 * i - 1) "#".repeat(k - i));
}
// lower part, decreasing * increasing #
for (int i = 1; i < k; i ) {
System.out.println("#".repeat(i) "*".repeat(2 * (k - i) - 1) "#".repeat(i));
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/536582.html
標籤:爪哇for循环迭代
