2013-05-30 8 views
0

나는 이미 정당화 된 문자 배열 왼쪽, 오른쪽 및 가운데를 반환하려고합니다.java에서 문자 배열의 텍스트를 정렬하는 방법은 무엇입니까?

각 줄의 최대 길이는 6 자라고 가정 해 보겠습니다. 정당화 된 텍스트의 각 출력은 다음과 같습니다.

Left: 
How is 
your 
day 

Center: 
How is 
your 
day 

Right: 
How is 
    your 
    day 

for 루프를 사용하면 행의 최대 한도 인 6을 초과하기 전에 '\ n'을 추가합니다.

Example[3] = '\n'; 

배열을 반환하여 정렬 된 형식으로 출력 할 수 있습니까?

몇 가지 검색을했는데 찾을 수 있었던 것은 문자열을 정당화하는 방법이었습니다.

끔찍한 형식을 사용하여 죄송합니다. 잘 포맷하는 방법을 모르겠다. 단순히 출력

+1

좋은 생각인지 확실치 않지만 공백으로 채우려고 했습니까? –

+0

남은 공백을 확인하고 나머지 공백을 추가하는 것만 큼? 내가 중심에 두게된다면 더러워지지 않을까? – user2435044

답변

2

이 매우 기본적인 예이다 ...

그것은 기본적으로 배향을 제공하는 공간으로 String 값을 패딩한다 ...

public class Align { 

    public static void main(String[] args) { 
     String values[] = new String[]{ 
      "How is", 
      "your", 
      "day"}; 

     int maxLength = 0; 
     for (String value : values) { 
      maxLength = Math.max(value.length(), maxLength); 
     } 

     System.out.println("Left:"); 
     for (String value : values) { 
      System.out.println("[" + leftPad(value, maxLength) + "]"); 
     } 
     System.out.println("\nRight:"); 
     for (String value : values) { 
      System.out.println("[" + rightPad(value, maxLength) + "]"); 
     } 
     System.out.println("\nCenter:"); 
     for (String value : values) { 
      System.out.println("[" + centerPad(value, maxLength) + "]"); 
     } 
    } 

    public static String leftPad(String sValue, int iMinLength) { 

     StringBuilder sb = new StringBuilder(iMinLength); 
     sb.append(sValue); 

     while (sb.length() < iMinLength) { 

      sb.append(" "); 

     } 

     return sb.toString(); 

    } 

    public static String rightPad(String sValue, int iMinLength) { 

     StringBuilder sb = new StringBuilder(iMinLength); 
     sb.append(sValue); 

     while (sb.length() < iMinLength) { 

      sb.insert(0, " "); 

     } 

     return sb.toString(); 

    } 

    public static String centerPad(String sValue, int iMinLength) { 

     if (sValue.length() < iMinLength) { 

      int length = sValue.length(); 
      int left = (iMinLength - sValue.length())/2; 
      int right = iMinLength - sValue.length() - left; 

      StringBuilder sb = new StringBuilder(sValue); 
      for (int index = 0; index < left; index++) { 
       sb.insert(0, " "); 
      } 
      for (int index = 0; index < right; index++) { 
       sb.append(" "); 
      } 

      sValue = sb.toString(); 

     } 

     return sValue; 

    } 
} 

...

Left: 
[How is] 
[your ] 
[day ] 

Right: 
[How is] 
[ your] 
[ day] 

Center: 
[How is] 
[ your ] 
[ day ] 
0

Commons StringUtils에는 다양한 형식의 문자열을 양쪽 맞춤하는 다양한 방법이 있습니다. like, leftpad, rightpad, centerpad

관련 문제