728x90
반응형

저도 수 앞이나 뒤로 공백을 넣어 정렬하는 기능을 찾아 보았지만

(C의 런타임 함수 중에 있는 printf와 비슷하게 쓰려는 목적으로 찾았지요)

API 문서에는 수 자체의 형식화를 위한 설명만 나와있더군요 ^^;

 

수의 앞이나 뒤에 공백이나 기타 기호를 넣어서 형식화 하는것은 수 자체에 대한

형식화가 아니기 때문에 DecimalFormat 클래스에서는 지원하지 않습니다.

이것을 보완하려면 어쩔 수 없이 별도의 메소드를 만들어서 써야 하지요.

 

아래의 코드가 참고가 될것 같군요 ^^;

테스트 해보시고 적당히 변형하여 사용하시면 될겁니다.

 

public class test {

    private static final char[] m_sharedArr = new char[128];

    private static String format0(String s, int size) {
        int len = s.length();
        int absSize = (size > 0) ? size : -size;
        if (len < absSize) {
            String sp = null;
            synchronized (m_sharedArr) {
                int l = absSize - len;
                for (int i=0; i < l; i++)
                    m_sharedArr[i] = ' ';
                sp = new String(m_sharedArr, 0, l);
            }
            if (size > 0)
                s = sp + s;
            else
                s = s + sp;
        }
        return s;
    }

    public static String format(long n, int size) {
        return format0(String.valueOf(n), size);
    }

    public static String format(double n, int size) {
        return format0(String.valueOf(n), size);
    }

    public static String format(Number n, int size) {
        return format0(String.valueOf(n), size);
    }

    public static void main(String[] args) {
        System.out.println("[" + format(20, 10) + "]");
        System.out.println("[" + format(20.332, 10) + "]");
        System.out.println("[" + format(20, -10) + "]");
        System.out.println("[" + format(20.332, -10) + "]");
    }

}

 

혹시 JDK 1.5를 사용하고 계신다면 java.util.Formatter 클래스에 있는 format 메소드와 java.io.PrintStream 클래스의 printf 메소드를 참고 해보세요.

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,