![](/img/trans.png)
[英]System.out.println Not doing what I expect when printing something that evaluates to a boolean
[英]I want to know what is system.out.println() doing in this code
我不知道為什么這些代碼的末尾有system.out.println。 這是什么,為什么在這里?
這段代碼是我朋友的一段代碼,他告訴我要理解這段代碼,我不明白為什么這段代碼后面還有system.out.println。
public class Nestedlooplab2 {
public static void main(String[] args) {
for (byte i = 1; i <= 5; i++) {
for (byte j = 1; j <= i; j++) {
System.out.print(".");
}
for (byte k=1; k<=(5-i);k++) {
System.out.print("*");
} System.out.println();}
}
}
歡迎來到堆棧溢出!
System.out.println()
本身只會打印一個換行符,例如\n
。 如果您要向此語句添加參數,它將打印您的參數和換行符。
通過寫入行分隔符字符串來終止當前行。 行分隔符字符串由系統屬性 line.separator 定義,不一定是單個換行符 ('\n')。
您鏈接的代碼將打印一定數量的.
字符和一定數量的*
字符,沒有任何換行符。 最后的System.out.println();
然后將打印一個換行符,循環將重新開始。
Output:
.****
..***
...**
....*
.....
您的代碼的 output 是:
.****
..***
...**
....*
.....
沒有System.out.println();
,output 將是:
.****..***...**....*.....
System.out.println();
為循環的每次交互在屏幕上打印一個換行符。
首先,讓我們看一下您的代碼的output:
.****
..***
...**
....*
.....
作為字符串,這與以下內容相同:
.****\n..***\n...**\n....*\n.....\n
默認情況下,在 Java 中使用System.out
會寫入字符的標准輸出流。 當你寫這個 stream 時,你可以使用各種方法,包括System.out.print
和System.out.println
。 調用print
將 output 您提供給它的確切字符串,而調用println
將 output 您提供給它的字符串,后跟一個新行(系統的行分隔符)。 如果您調用System.out.println()
( println
沒有參數),您將 output 您提供的字符串 ( ""
) 並將 output 移動到下一行。 本質上,這意味着在您的代碼中刪除對System.out.println()
的調用將導致以下 output:
.****..***...**....*.....
這個 output 看起來與字符串完全相同。 如您所見,當您僅調用System.out.print
而不調用System.out.println
時,output 中沒有換行符( \n
)。
最后,讓我們在更易於閱讀和理解的上下文中查看您的代碼。 我在這里使用 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));
}
}
Output:
.****
..***
...**
....*
.....
這相當於原來的output。 但是,閱讀和理解正在發生的事情要清楚得多。 假設您無權訪問這些功能,則可以改為執行以下操作:
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();
}
這段代碼也有相同的 output。 它的內容與您的代碼片段沒有太大區別,因為您的代碼片段確實有正確的想法。 但是,它的格式更一致,這使您和其他人更容易閱讀代碼。 請注意重復是如何用名稱rpts
標記的,並且(在兩個示例中)迭代變量都是整數。 Java 程序員通常使用整數進行迭代,因為使用bytes
進行迭代節省的空間對於大多數應用程序來說可以忽略不計,並且整數覆蓋了您可能想要迭代的大部分值范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.