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 的回答涵盖了StringBuilderwell 的使用。如果你碰巧在使用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();
}

附带说明一下,如果您想要一个仅包含唯一值的集合,您可以考虑使用 aHashSet而不是ArrayList. 这将防止您的程序多次打印出相同的字符。

于 2012-12-02T20:04:28.793 回答