2012-12-02 52 views
1

可能重複:
The most sophisticated way for creating comma-separated Strings from a Collection/Array/List?獨立的字符由逗號的Java

所有字符應該用逗號除了最後一個字符分開。
輸出示例: 「以前的字符猜測:A,B,C,X」 或 「猜上一個人物:一個」

繼承人我有:

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

什麼問題? –

+0

http://stackoverflow.com/questions/205555/the-most-sophisticated-way-for-creating-comma-separated-strings-from-a-collectio可能有幫助 – andyb

+0

你應該改善你的問題的細節。所以一條線......真的嗎? – MUG4N

回答

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()); 
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。這會阻止您的程序多次打印出相同的字符。

1

bellum's answer很好地涵蓋了StringBuilder的使用。如果你碰巧使用Guava,您可以使用Joiner

String charsGuessedConcat = Joiner.on(", ").join(charsGuessed); 
System.out.print("Previous characters guessed: " + charsGuessedConcat);