2012-12-02 3 views
1

가능한 중복 :
The most sophisticated way for creating comma-separated Strings from a Collection/Array/List?구분 문자

모든 문자를 마지막 문자 제외 쉼표로 구분한다.
예 출력 : "이전 문자는 추측 : A, B, C, X"또는 "추측 이전 문자 :는"

내가 가진 Heres는 무엇을 :

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

, 당신 만의 고유 값을 보유하고 컬렉션을 원한다면, 당신은 ArrayList보다는 HashSet를 사용으로 볼 수있다. 이렇게하면 프로그램이 동일한 문자를 두 번 이상 인쇄하지 못하게됩니다.

1

bellum's answerStringBuilder의 사용을 포함한다. 당신이 Guava를 사용하는 일이 있다면, 당신은 Joiner를 사용할 수 있습니다

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