消除最后的逗号&空间

时间:2016-03-14 23:22:05

标签: java

这是原始提示:

"编写for循环以打印数组hourlyTemp的所有NUM_VALS个元素。用逗号和空格分隔元素。例如:如果hourlyTemp = {90,92,94,95},请打印: 90,92,94,95

请注意,最后一个元素后面没有逗号,空格或换行符。"

这是我的代码:

import java.util.Scanner;

public class PrintWithComma {
    public static void main (String [] args) {
        final int NUM_VALS = 4;
        int[] hourlyTemp = new int[NUM_VALS];
        int i = 0;

        hourlyTemp[0] = 90;
        hourlyTemp[1] = 92;
        hourlyTemp[2] = 94;
        hourlyTemp[3] = 95;

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

        System.out.println("");

        return;
    }
}

我的输出是&#34; 90,92,94,95和#34;什么时候应该是&#34; 90,92,94,95和#34;

如何消除最后一个逗号和空格?

6 个答案:

答案 0 :(得分:4)

通常,您不知道要预先打印的值的数量(但在您的情况下,它是4)。因此,打印分隔符before而不是after更容易。否if s:

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

特技是 - 第一次没有什么要分开因此分隔符为空,稍后 - ", ";

适合注册,保存分支预测器的工作。计算if (i == last_value)也不是0。

答案 1 :(得分:2)

String delimiter = ", ";

第一种方法是使用java.util.StringJoiner。此外,您可以指定结果字符串的前缀和后缀(例如,(delimiter, "[", "]"))。

StringJoiner joiner = new StringJoiner(delimiter);
for (int i : hourlyTemp) joiner.add(Integer.toString(i));
System.out.println(joiner.toString());

第二种方法是使用Stream API。

Arrays.stream(hourlyTemp)
            .map(i -> i.toString())
            .collect(Collectors.joining(delimiter));

或者最无聊的方式:

for (i = 0; i < NUM_VALS;) 
    System.out.print(hourlyTemp[i] + (i++ != (NUM_VALS - 1) ? delimiter : ""));

答案 2 :(得分:1)

检查是否达到了最后一次迭代。如果不打印逗号,否则不要。

替换:

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

使用:

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

答案 3 :(得分:0)

将值打印和逗号空间打印拆分为两个单独的语句,并且不打印最后一个值的逗号空间:

System.out.print(hourlyTemp[i]);
if (i + 1 < NUM_VALS) {
  System.out.print(", ");
}

或者,在循环外打印第一个值,然后在循环内首先打印逗号空间:

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

答案 4 :(得分:0)

检查i是否已达到最后一次迭代。

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

答案 5 :(得分:0)

例如,您可以设置条件,并在到达结尾时打印空白区域。

for(int i=0; i<10; i++) {
    System.out.print(i + (i < 10-1 ? ", " : ""));
}