2017-11-29 5 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

그냥 확인 될 것 .out.print (요소); else System.out.print (element + ","); –

+0

가끔 루프를 위해 나는 첫 번째 루프에서 설정되고 다른 모든 루프에 쉼표를 삽입하는 부울을 사용합니다. 하지만 최근에이 패턴이 많이 나오는 코드 생성기를 작성하여 클래스를 만들었습니다. 내부적으로 'print'메쏘드가 두 번 이상 호출되었는지를 결정하기 위해 boolean과 boolean을 유지한다. 그런 다음 필요한 값 (생성자에 전달됨)을 출력합니다. – slipperyseal

답변

0

루프 후에는

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

편집 :

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) 

을 입력하지 않았습니다.

어쨌든 단순히 자바 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(", ")); 
} 

사전 자바 (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

희망이 자바 8

String op = ""; 
for (int i = 0; i < arr.length; i++) { 
    op += i != 0 ? ", " + arr[i] : arr[i]; 
} 
1

을 (당신은 논리를 잡고 코드로 통합 할 수 있습니다) 도움이, 당신은 전혀 이상이 필요하지 않습니다 : 를하는 경우 문자열의 배열 다음은 당신이 성취하고자하는 것과 똑같은 것을 줄 것입니다. 시스템 - 경우 (1 내가 == arr.length) :

how-to-convert-array-to-comma-separated-string

String joined = String.join(",", name); 
또 다른 방법은 자바 (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(", ")));