簡體   English   中英

我想知道 system.out.println() 在這段代碼中做了什么

[英]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 如果您要向此語句添加參數,它將打印您的參數和換行符。

這是println的 JavaDocs

通過寫入行分隔符字符串來終止當前行。 行分隔符字符串由系統屬性 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.printSystem.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM