2014-10-02 6 views
0

나는 또한 그 이름을 가진 사람들의 양과 성을 가지고있는 이름의 목록을 가지고 있습니다.toString을 정렬하는 방법

예 :

이사벨라 F 22,822

야곱 M 22,011

소피아 F 20,566

에단 M 17,956

엠마 F 내가 정렬을 중심하려는 17,277

섹스와 오른쪽이 같은 카운트를 정렬 :

Isabella______F_____22822

Jacob_______M_____22011

Sophia______F________205

Ethan_______M______7956

Emma_______F____ 17,277

내가 그것을 실행하지만, java.util.IllegalFormatPrecisionException을 얻으려고 whenI 컴파일 포맷하려고 오류. 코드 아래

public String toString() 
{ 
     return String.format("%.30s%1.15c%7.d", Name, Sex, Count); 

} 
+0

'이름', '성별'및 '개수'문자열 변수입니까? 그렇다면 소문자 여야합니다. –

+1

IMO toString()에서 서식을 지정하는 것은 좋지 않습니다. 형식은 현재의 용도에 따라 다르므로 지정된 형식으로 문자열을 출력하는 방법이 필요합니다. 그러나 그 메소드가 toString이 아닌 경우 클래스를 재사용 할 수 있습니다. – ControlAltDel

+0

정확히 원하는 것은 무엇입니까? 최소한의 예제를 게시하십시오. – talex

답변

0

는 테스트하지 - 페이지에 여기 코딩의 가능성이 매우 간단하지만 수동 방법은 그것을 할 수 있습니다 :

public String spc(int n) 
{ 
    StringBuilder sb = new StringBuilder(); 
    for (int i=0; i<n; i++) sb.append(" "); 
    return sb.toString(); 
} 

public String toString() 
{ 
    StringBuilder sb = new StringBuilder(); 
    sb.append(name).append(spc(20 - name.length())); 
    sb.append(sex); 
    sb.append(spc(20 - count.length())).append(count); 
    return sb.toString(); 
} 

이름는 20 대에 정렬 남아 섹스 정렬되지 않음, 카운트 오른쪽 정렬. 물론 String.format()을 사용하여 값의 형식을 지정할 수 있으며 변수 의 이름이, , 성도가인 경우으로 바뀌 었음을 알 수 있습니다. 나는 또한 그들이 이미 문자열이라고 가정합니다.

관련 문제