所以基本上这就是我的代码的样子
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 condition 中获得多少元素。我只能想到两件事,添加另一个循环或使用String然后substr输出。
所以我将它转换为String
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);
}
我的问题是关于了解类似问题的最佳方式(转换为字符串然后对其进行子串?)或者是否有更好的方法?我似乎失踪了。
答案 0 :(得分:2)
您不必构造字符串。考虑以下轻微调整:
public static void printPrime(int[] arr)
{
int len = arr.length;
String sep = ""; // HERE
for(int i = 0; i < len; i++)
{
int c = countFactor(arr[i]);
if(c == 2)
{
System.out.print(sep); // HERE
sep = ",";
System.out.print(arr[i]);
}
}
}
首先打印分隔符,并将其值存储在变量中:第一次打印时,它将打印空字符串。此后,它会打印逗号。
答案 1 :(得分:1)
无论你使用什么方法都应该正确操作一个空数组(长度为0),一个单独的数组(长度为1)和一个长数组(一个大的长度)。
添加逗号然后删除它需要对空数组进行特殊处理。因此,无论你做什么,你都必须有条件代码(if语句)。