簡體   English   中英

如何使用 FOR 循環在 1 行打印逗號分隔列表,最后一個數字結尾沒有逗號/空格/換行符?

[英]How can I print a comma separated list on 1 line with the last number ending without a comma/space/new line using a FOR loop?

for (i = 0; i < hourlyTemp.length; i++) {
    System.out.print(hourlyTemp[i] + ", ");
     
}

這會給我我想要的輸出,但結尾有一個逗號。 我怎么能在沒有逗號的情況下做到這一點? 甚至可以使用for循環嗎?

十分簡單。

for(int i = 0; i < hourlyTemp.length; i++) {
    System.out.print(hourlyTemp[i]);
    if(i == hourlyTemp.length -1) break;
    System.out.print(",");
}

你可以添加一個if語句來打印逗號:

for (i = 0; i < hourlyTemp.length; i++) {
    System.out.print(hourlyTemp[i]); 
    if(i != (hourlyTemp.length - 1)){
        System.out.print(", ");
    }
}

如果您不想在循環中使用 if 條件以避免在較大數組的情況下進行條件檢查,則可以使用以下代碼:

for (i = 0; i < hourlyTemp.length - 1; i++)
  {
    System.out.print (hourlyTemp[i] + ", ");
  }

System.out.print (hourlyTemp[hourlyTemp.length - 1]);

我發現抑制前導逗號而不是尾隨逗號更容易,因為我們不必使用length來這樣做:

for (i = 0; i < hourlyTemp.length; i++) {
    if (i != 0)
        System.out.print(", ");
    System.out.print(hourlyTemp[i]);
}

對於 for-each 循環,您需要一個標志:

boolean first = true;
for (double temp : hourlyTemp) {
    if (first)
        first = false;
    else
        System.out.print(", ");
    System.out.print(temp);
}

您還可以使用整行構建一個String 那會表現得更好,因為print()有一些開銷:

StringBuilder buf = new StringBuilder();
for (double temp : hourlyTemp)
    buf.append(", ").append(temp);
if (buf.length() != 0)
    System.out.print(buf.substring(2));

使用 Java 8 中添加的StringJoiner更加容易:

StringJoiner buf = new StringJoiner(", ");
for (double temp : hourlyTemp)
    buf.add(String.valueOf(temp));
System.out.print(buf.toString());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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