使用数组删除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.stream
returns一串int
filter
只保留数组中 >= 50 的那些元素
boxed
将 int
(原始)转换为 Integer
(对象)
map
将 Integer
转换为 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
我卡住了。我正在尝试删除输出后面的最后一个逗号,但我不知道该怎么做。
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
returns一串int
filter
只保留数组中 >= 50 的那些元素
boxed
将int
(原始)转换为Integer
(对象)map
将Integer
转换为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