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



卡住了。我试图删除输出后面的最后一个逗号,但我只是不知道如何。

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.stream返回int
  • filter只保留数组中>= 50的元素
  • boxedint(原语)转换为Integer(对象)
  • mapInteger转换为String
  • Collectors.joining连接流中的所有元素,并用逗号后跟空格分隔每个元素,即,

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

97, 123, 88, 200, 50, 99

另一个解决方案,并保持为每个语句:

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类:

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());

控制台窗口的输出将是:

97, 123, 88, 200, 50, 99

最新更新