使用数组删除for循环中的最后一个逗号

Remove last comma in for loop using array

我卡住了。我正在尝试删除输出后面的最后一个逗号,但我不知道该怎么做。

123, 97, 88, 99, 200, 50,

下面是我的代码,同时检查数组中的最大值。

public static void main(String[] args) {
    int[] array = {4, 97, 123, 49, 88, 200, 50, 13, 26, 99};

    for (int i : array) {
        if (i >= 50) {
            System.out.print(i + ", ");
        }
    }
    System.out.println();
}

此处的一个解决方法是 在数组中除第一个元素之外的所有元素前添加逗号。

public static void main(String[] args) {
    int[] array = {4, 97, 123, 49, 88, 200, 50, 13, 26, 99};

    for (int i=0; i < array.length; ++i) {
        if (i > 0 && array[i] >= 50) {
            System.out.print(", ");
        }
        if (array[i] >= 50) {
            System.out.print(array[i]);
        }
    }
    System.out.println();
}

这会打印:

97, 123, 88, 200, 50, 99

编辑:

为简洁起见,并为了使用已经满足您要求的 Java 的内部 API,我们可以直接使用 Arrays.toString

int[] array = {4, 97, 123, 49, 88, 200, 50, 13, 26, 99};
String output = Arrays.toString(array).replaceAll("^\[|\]$", "");
System.out.println(output);
// 4, 97, 123, 49, 88, 200, 50, 13, 26, 99

为了修复您的代码,我添加了一个标志来指示打印的第一个数组元素。对于打印的所有后续数组元素,我在前面加上分隔符。

    int[] array = {4, 97, 123, 49, 88, 200, 50, 13, 26, 99};
    boolean first = true;
    for (int i : array) {
        if (i >= 50) {
            if (first) {
                first = false;
            }
            else {
                System.out.print(", ");
            }
            System.out.print(i);
        }
    }
    System.out.println();

运行 上面的代码打印如下:

97, 123, 88, 200, 50, 99

或者,您可以使用 streams:

public static void main(String[] args) {
    int[] array = {4, 97, 123, 49, 88, 200, 50, 13, 26, 99};
    String result = Arrays.stream(array)
                          .filter(i -> i >= 50)
                          .boxed()
                          .map(i -> i.toString())
                          .collect(Collectors.joining(", "));
    System.out.println(result);
  • Arrays.streamreturns一串int
  • filter 只保留数组中 >= 50
  • 的那些元素
  • boxedint(原始)转换为 Integer(对象)
  • mapInteger 转换为 String
  • Collectors.joining 连接流中的所有元素,并用逗号后跟 space 分隔每个元素,即 ,

运行 上面的代码打印如下:

97, 123, 88, 200, 50, 99

另一种解决方案,并保留for-each声明:

public static void main(String[] args) {
    int[] array = {4, 97, 123, 49, 88, 200, 50, 13, 26, 99};

    boolean found = false;
    for (int i : array) {
        if (found) {
            System.out.print(", ");
        } else {
            found = true;
        }
        System.out.print(i);
    }
    System.out.println();
}

这是您可以执行此操作的另一种方法。它利用 StringBuilder class:

int[] array = {4, 97, 123, 49, 88, 200, 50, 13, 26, 99};

StringBuilder sb = new StringBuilder("");
for (int i : array) {
    if (i >= 50) {
        if (!sb.toString().isEmpty()) {
            sb.append(", ");
        }
        sb.append(i);
    }
}
System.out.println(sb.toString());

控制台 window 的输出将是:

97, 123, 88, 200, 50, 99