【发布时间】:2017-08-25 16:31:43
【问题描述】:
所以基本上这就是我的代码的样子
public static void printPrime(int[] arr)
{
int len = arr.length;
for(int i = 0; i < len; i++)
{
int c = countFactor(arr[i]);
if(c == 2)
{
System.out.print(arr[i] + ",");
}
}
}
所以输出最后确实有“逗号”。我试图环顾四周以删除最后一个逗号,一些答案说要单独打印最后一个元素,但这只有在输出取决于 for 循环而不是 if 条件时才会发生。 但正如你所见,我不知道我将从 if 条件中得到多少元素。我只能想到两件事,添加另一个循环或使用 String 然后 substr 输出。
所以我把它转换成字符串
public static void printPrime(int[] arr)
{
int len = arr.length;
String str = "";
for(int i = 0; i < len; i++)
{
int c = countFactor(arr[i]);
if(c == 2)
{
str = str + arr[i] + ",";
}
}
str = str.substring(0, str.length()-1);
System.out.println(str);
}
我的问题是关于了解类似问题的最佳方式(转换为字符串然后对其进行子字符串化?)或者是否还有更好的方法?我好像不见了。
【问题讨论】:
-
你可以使用
String.join -
是的。从某处的
countFactor()收集值,然后在它们上使用String.join()。为了获得额外的信用,请使用IntStream流式传输数组,这样您就不需要为countFactor()的值创建额外的空间。 -
@Shad 在循环中使用字符串连接不是一个好主意:如果要构建字符串,请使用
StringBuilder以避免构建大量中间字符串。 -
@Kayaman 我实际上并没有直接使用来自
countFactor()的值并输出它们。如您所见,我正在对整数数组元素进行操作。 -
@Kayaman 因为我应该首先使用 String.join() ,所以我想我应该将数组中的所有 int 元素转换为 String.Adding to Single String 不会做,因为所有添加到该字符串的元素将使其成为一个元素字符串。字符串数组不会做,因为我事先不知道大小。所以我想我只剩下使用 String ArrayList 了吗?然后最后使用 String.join 就可以了。
标签: java