我遇到了这个问题,如果想要循环一个数组并打印出用逗号分隔的内容,它会在最后输出一个额外的内容。 我做了一些搜索,但找不到适用于这种情况的答案。
代码:
public String toString(){
String hold= "";
for(int i = 0; i < array.length; i ++){
if(array[i] == true){
hold + = i;
if(i != array.length-1)
hold+= ",";
}
}
return hold;
}
答案 0 :(得分:1)
String joined = String.join(",", name);
how-to-convert-array-to-comma-separated-string
Java 8的另一种方式是
List<Integer> numbers = Arrays.asList(1,2,3,4,5,6,7);
System.out.println(numbers.stream()
.map(number -> String.valueOf(number))
.collect(toStringJoiner(", ")));
答案 1 :(得分:0)
循环后,检查它是否以逗号结尾
for(whatever){
whatever
}
if(hold.endsWith(","){
hold = hold.substring(0,hold.length()-1);
}
编辑:
String arrayString = Arrays.toString(my_array)
arrayString = arrayString.substring(1,arrayString.length()-1) // gets rid of the '[]'
答案 2 :(得分:0)
也许最后array[i]
不是true
所以你的逻辑测试
if(i != array.length-1)
未进入。
但无论如何只需要替换
if(hold.endsWith (","){
hold = hold.substring (0, hold.length()-1);
}
答案 3 :(得分:0)
试试这个
public String toString(){
String hold= "";
for(int i = 0; i < array.length; i ++){
if(array[i] == true){
if (i != 0) {
hold += ",";
}
hold += i;
// if(i != array.length-1) {
// hold+= ",";
// }
}
}
return hold;
}
答案 4 :(得分:0)
使用Java 8非常容易:
String[] values={"foo", "bar", "baz"};
public String toString(){
return Arrays.stream(values).collect(Collectors.joining(", "));
}
pre-Java 8我会采用这种冗长的方式:
public String toString(){
StringBuilder sb = new StringBuilder();
Iterator<String> iterator = Arrays.asList(values).iterator();
if(iterator.hasNext()){
sb.append(iterator.next());
while(iterator.hasNext()){
sb.append(", ").append(iterator.next());
}
}
return sb.toString();
}
答案 5 :(得分:0)
希望这会有所帮助 (您可以获取逻辑并与代码集成)
String op = "";
for (int i = 0; i < arr.length; i++) {
op += i != 0 ? ", " + arr[i] : arr[i];
}