Java-在循环中打印逗号

Java-在循环中打印逗号,java,arrays,loops,output,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 != arra

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

代码:

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;
}
公共字符串toString(){
字符串hold=“”;
for(int i=0;i
循环结束后,只需检查循环是否以逗号结束

for(whatever){
  whatever
}
if(hold.endsWith(","){
  hold = hold.substring(0,hold.length()-1);
}
编辑:


也许最后一个
数组[i]
不是
真的
,所以您的逻辑测试

if(i != array.length-1)
未签订合同

但无论如何,只要更换

if(hold.endsWith (","){
  hold = hold.substring (0, hold.length()-1);
}
试试这个

      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;
        }
公共字符串toString(){
字符串hold=“”;
for(int i=0;i

使用Java 8非常简单:

String[] values={"foo", "bar", "baz"};

public String toString(){
    return Arrays.stream(values).collect(Collectors.joining(", "));
}
在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();
}
公共字符串toString(){
StringBuilder sb=新的StringBuilder();
迭代器迭代器=数组.asList(值).Iterator();
if(iterator.hasNext()){
sb.append(iterator.next());
while(iterator.hasNext()){
sb.append(“,”).append(iterator.next());
}
}
使某人返回字符串();
}
希望这有帮助 (您可以抓住逻辑并与代码集成)

String op=”“;
对于(int i=0;i
在Java 8中,您不再需要这个: 如果它是字符串数组,那么下面的内容将为您提供您想要实现的相同内容

String joined = String.join(",", name);

另一种方式是Java8

List<Integer> numbers = Arrays.asList(1,2,3,4,5,6,7);

    System.out.println(numbers.stream()
        .map(number -> String.valueOf(number))
        .collect(toStringJoiner(", ")));
List number=Arrays.asList(1,2,3,4,5,6,7);
System.out.println(numbers.stream()
.map(编号->字符串.valueOf(编号))
.收取(toStringJoiner(“,”);

谢谢。但是我正在寻找一种方法,一开始甚至不生成逗号。我添加了一种不同的方法来完成它。只需检查当前迭代是否是最后一次,如中所示:if(I==arr.length-1)System.out.print(element);else系统输出打印(元素+“,”);对于偶尔的循环,我使用一个布尔值,它在第一个循环上设置,并在每个其他循环上插入一个逗号。但我最近一直在写一个代码生成器,其中经常出现这种模式,所以我创建了一个类来表示它。内部是维护和布尔值,以确定其“print”方法是否被多次调用。只有这样,它才会输出所需的值(传递给构造函数)。
String joined = String.join(",", name);
List<Integer> numbers = Arrays.asList(1,2,3,4,5,6,7);

    System.out.println(numbers.stream()
        .map(number -> String.valueOf(number))
        .collect(toStringJoiner(", ")));