1

重複の可能性:
コレクション/配列/リストからカンマ区切りの文字列を作成する最も洗練された方法は?

最後の文字を除いて、すべての文字はコンマで区切る必要があります。
出力例: 「推測された前の文字: a、b、c、x」または「推測された前の文字: a」

私が持っているものは次のとおりです。

ArrayList<Character> charsGuessed = new ArrayList<Character>();

//takes in char guess from user
char guess=getCharacterGuess(in);

//adds char guessed to array
charsGuessed.add(guess);

int size=charsGuessed.size();
System.out.print("Previous characters guessed: ");

for(int i=0; i<size; i++)
{
   if(i<=size-1)
   {
      System.out.print(charsGuessed.get(i) + " ");
   }
   else
   {
      System.out.print("," + " " + charsGuessed.get(i));
   }
}
4

3 に答える 3

1

より良い使用StringBuilder:

StringBuilder builder = new StringBuilder();
for (int i = 0; i < arraySize; i++){
    builder.append(charsGuessed.get(i));
    if (i < arraySize - 1){
        builder.append(", ");
    }
}
System.out.println(builder.toString());
于 2012-12-02T19:59:12.980 に答える
1

bellumの答えは、井戸の使用をカバーしてStringBuilderいました。Guavaを使用している場合は、次を使用できますJoiner

String charsGuessedConcat = Joiner.on(", ").join(charsGuessed);
System.out.print("Previous characters guessed: " + charsGuessedConcat);
于 2012-12-02T20:05:30.330 に答える
0

これは非常に簡単です。基本的に、最後の文字を除くリスト内のすべての文字の後にコンマを印刷/追加します。

例:

private static void printGuessedCharacters(List<Character> chars) {
    System.out.print("Characters guessed: ");

    if(chars.isEmpty()) {
        System.out.println("none.");
        return;
    }

    for(int i = 0; i < chars.size(); i++) {
        System.out.print(chars.get(i));

        if(i < chars.size() - 1) { // If it's not the last char in list.
            System.out.print(", ");
        }
    }
    System.out.println();
}

余談ですが、一意の値のみを保持するコレクションが必要な場合は、HashSetではなくを使用して調べることができますArrayList。これにより、プログラムが同じ文字を複数回出力するのを防ぐことができます。

于 2012-12-02T20:04:28.793 に答える