3 回答

TA貢獻2039條經驗 獲得超8個贊
首先,讓我們看一下代碼的輸出:
.****
..***
...**
....*
.....
作為字符串,這與:
.****\n..***\n...**\n....*\n.....\n
默認情況下,在 Java 中使用System.out會寫入標準字符輸出流。當您寫入此流時,可以使用各種方法,包括System.out.print和System.out.println。調用print將輸出您提供給它的確切字符串,而調用println將輸出您提供給它的字符串,后跟一個新行(系統的行分隔符)。如果您調用System.out.println()(println不帶參數),您將輸出您提供的字符串("")并將輸出移動到下一行。本質上,這意味著刪除System.out.println()代碼中的調用將產生以下輸出:
.****..***...**....*.....
此輸出看起來與字符串完全相同。\n正如您所看到的,當您只調用System.out.print和不調用時,輸出中沒有換行符 ( ) System.out.println。
最后,讓我們看看您的代碼,使其更易于閱讀和理解。我正在使用 Java 11+ 功能String.repeat來極大地簡化此處重復字符串的操作:
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
System.out.println(".".repeat(i)+"*".repeat(5-i));
}
}
輸出:
.****
..***
...**
....*
.....
這相當于原始輸出。然而,閱讀和理解正在發生的事情會更清楚。假設您無權訪問這些功能,您可以執行以下操作:
for (int i = 1; i <= 5; i++) {
for(int rpts = 0; rpts < i; rpts++) {
System.out.print('.');
}
for(int rpts = i; rpts < 5; rpts++) {
System.out.print('*');
}
System.out.println();
}
這段代碼也有相同的輸出。它的內容與您的代碼片段沒有太大區別,因為您的代碼片段確實有正確的想法。然而,它的格式更加一致,這使得您自己和其他人更容易閱讀代碼。請注意重復如何用 name 進行標記rpts,并且(在兩個示例中)迭代變量都是整數。Java 程序員通常使用整數進行迭代,因為使用迭代所節省的空間bytes對于大多數應用程序而言可以忽略不計,并且整數涵蓋了您可能想要迭代的大多數值范圍。

TA貢獻1802條經驗 獲得超5個贊
您的代碼的輸出是:
.****
..***
...**
....*
.....
如果沒有System.out.println();,輸出將是:
.****..***...**....*.....
System.out.println();對于循環的每次交互,都會在屏幕上打印一個新行字符。

TA貢獻1111條經驗 獲得超0個贊
歡迎來到堆棧溢出!
a 本身System.out.println()
只會打印一個換行符,例如\n
。如果您要向此語句添加參數,它將打印您的參數以及換行符。
這是 JavaDocsprintln
通過寫入行分隔符字符串來終止當前行。行分隔符字符串由系統屬性 line.separator 定義,并且不一定是單個換行符 ('\n')。
您鏈接的代碼將打印一定數量的.
字符和一定數量的*
字符,沒有任何換行符。然后,最后一個System.out.println();
將打印一個換行符,并且循環將重新開始。
輸出:
.**** ..*** ...** ....* .....
添加回答
舉報