亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

慕標琳琳 2023-09-20 17:23:58
要反轉映射,使其不同的值成為鍵,并將其鍵添加到相應值下的集合中,請groupingBy()在映射條目上使用。原始映射中的值必須正確實現equals()并hashCode()用作新哈希表中的鍵,這一點很重要。static <K, V> Map<V, Set<K>> invert(Map<? extends K, ? extends V> original) {  return original.entrySet().stream()    .collect(Collectors.groupingBy(      Map.Entry::getValue,       Collectors.mapping(Map.Entry::getKey, Collectors.toSet())    ));}如果你想對組進行排序,你可以創建一個專門的“下游”收集器:static <K, V> Map<V, SortedSet<K>> invert(    Map<? extends K, ? extends V> original,     Comparator<? super K> order) {  Collector<K, ?, SortedSet<K>> toSortedSet =      Collectors.toCollection(() -> new TreeSet<>(order));  return original.entrySet().stream()    .collect(Collectors.groupingBy(      Map.Entry::getValue,       Collectors.mapping(Map.Entry::getKey, toSortedSet)    ));}
查看完整描述

3 回答

?
largeQ

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對于大多數應用程序而言可以忽略不計,并且整數涵蓋了您可能想要迭代的大多數值范圍。


查看完整回答
反對 回復 2023-09-20
?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

您的代碼的輸出是:


.****

..***

...**

....*

.....

如果沒有System.out.println();,輸出將是:


.****..***...**....*.....

System.out.println();對于循環的每次交互,都會在屏幕上打印一個新行字符。


查看完整回答
反對 回復 2023-09-20
?
catspeake

TA貢獻1111條經驗 獲得超0個贊

歡迎來到堆棧溢出!

a 本身System.out.println()只會打印一個換行符,例如\n。如果您要向此語句添加參數,它將打印您的參數以及換行符。

這是 JavaDocsprintln

通過寫入行分隔符字符串來終止當前行。行分隔符字符串由系統屬性 line.separator 定義,并且不一定是單個換行符 ('\n')。

您鏈接的代碼將打印一定數量的.字符和一定數量的*字符,沒有任何換行符。然后,最后一個System.out.println();將打印一個換行符,并且循環將重新開始。

輸出:

.****
..***
...**
....*
.....


查看完整回答
反對 回復 2023-09-20
  • 3 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號