[Java] 6.5.2 Formatter 클래스 사용하여 포멧에 맞게 출력

Java 언어에서는 Formatter 클래스를 제공하여 원하는 형태로 출력을 지정할 수 있습니다. Formatter 클래스는 다양한 출력에 사용할 수 있는데 여기에서는 출력에 사용할 문자열을 만드는 방법에 관해서만 다루고 있습니다.

출력 포멧을 정하는 방법은 앞에서 소개한 String 클래스의 format 메서드의 포멧 지정자와 같은 방법입니다.

%[index$][flags][width]type

특히 Formmater 클래스의 format 메서드를 여러 번 사용한 후에 단 한 번의 출력 구문으로 전체를 출력할 수 있는 장점이 있습니다. 만약 현재까지 format 메서드를 사용한 것을 지우기를 원한다면 flush 메서드를 사용할 수 있습니다.

다음은 Formatter 클래스를 이용하여 원하는 포멧에 맞게 출력하는 예제입니다.

//Formatter 클래스를 이용하여 원하는 포멧으로 출력
import java.util.*;
public class Program {
	public static void main(String[] args){
		
		Formatter form = new Formatter();
		
		form.format("== 타입 지정==%n");
		form.format("10 진수%d%n", 20);
		form.format("16 진수%x%n", 20);
		form.format("8 진수%o%n", 20);
		form.format("실수 %f%n", 3.5);
		form.format("문자열 %s%n", "Hello");

		form.format("== 인덱스 지정==%n");
		form.format("%1$d %2$s%n", 23,"홍길동");
		form.format(
			"10진수:%1$d 8진수:%1$o 16진수:%1$x%n", 20);

		form.format("== flags 지정==%n");
		form.format("[디폴트 정렬 %10d]%n", 27);
		form.format("[왼쪽 정렬 %-10d]%n", 27);
		form.format("[부호 표시 %+10d]%n", 27);	
		form.format("[타입 명시 %#10x]%n", 27);		
		form.format("[0 채우기 %010d]%n", 27);		
		form.format("[음수는 괄호로 %(10d]%n", -27);
		form.format("[양수는 공백 % d]%n", 27);
		form.format("[양수는 공백 % d]%n", -27);
		System.out.println(form.toString());
		form.flush();
		form.format("flush 테스트%n");
		System.out.println(form.toString());
	}
}

실행 결과

== 타입 지정==
10 진수20
16 진수14
8 진수24
실수 3.500000
문자열 Hello
== 인덱스 지정==
23 홍길동
10진수:20 8진수:24 16진수:14
== flags 지정==
[디폴트 정렬         27]
[왼쪽 정렬 27        ]
[부호 표시        +27]
[타입 명시       0x1b]
[0 채우기 0000000027]
[음수는 괄호로       (27)]
[양수는 공백  27]
[양수는 공백 -27]

== 타입 지정==
10 진수20
16 진수14
8 진수24
실수 3.500000
문자열 Hello
== 인덱스 지정==
23 홍길동
10진수:20 8진수:24 16진수:14
== flags 지정==
[디폴트 정렬         27]
[왼쪽 정렬 27        ]
[부호 표시        +27]
[타입 명시       0x1b]
[0 채우기 0000000027]
[음수는 괄호로       (27)]
[양수는 공백  27]
[양수는 공백 -27]
flush 테스트