2017-11-29 4 views
0

この問題は、配列をループして内容をカンマで区切って出力したい場合、末尾に余分な文字を表示する場合に実行されます。 私はいくつかの検索をしましたが、この状況に対応した回答は見つかりませんでした。Java - ループ中のカンマの印刷

コード:ループした後

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

だろうもう一つの方法だけで確認してください。場合(I == arr.length - 1)システム.out.print(要素);それ以外の場合はSystem.out.print(element + "、"); –

+0

時折のループのために私は、最初のループで設定されたブール値を使用し、他のすべてのループにコンマを挿入します。しかし最近、このパターンがたくさん出てくるところのコードジェネレータを書いています。そのクラスを表現するためのクラスを作りました。内部的には 'print'メソッドが複数回呼び出されたかどうかを判断するブール値を保持します。それだけが必要な値を出力します(コンストラクタに渡されます)。 – slipperyseal

答えて

0

ちょうどそれはコンマで終わる場合

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

EDITチェック:

String arrayString = Arrays.toString(my_array) 
arrayString = arrayString.substring(1,arrayString.length()-1) // gets rid of the '[]' 
+0

ありがとうございます。しかし、私は最初にコンマを生成しない方法を探しています –

+0

私はそれを行うために別の方法を追加しました – Solace

0

たぶん最後array[i]はので、あなたのロジックtrueではありませんテスト:

if(i != array.length-1) 

は入力されていません。

しかし、いずれにせよ、単にそれは、Java 8と非常に簡単です。この

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

0

置き換える:

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(); 
} 
0

を試してみてください

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

希望これは、Java 8で (あなたがロジックをつかむと、あなたのコードに統合することができます)

String op = ""; 
for (int i = 0; i < arr.length; i++) { 
    op += i != 0 ? ", " + arr[i] : arr[i]; 
} 
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(", ")));