Java - 在循环中打印逗号

时间:2017-11-29 01:46:18

标签: java arrays loops output

我遇到了这个问题,如果想要循环一个数组并打印出用逗号分隔的内容,它会在最后输出一个额外的内容。 我做了一些搜索,但找不到适用于这种情况的答案。

代码:

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;
}

6 个答案:

答案 0 :(得分:1)

在Java 8中,你根本不需要这个: 如果它的字符串数组接下来将给你你想要达到的相同的东西。

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];
}