본문 바로가기
Java

ChoiceFormat과 MessageFormat

by 이쟝 2022. 1. 8.

ChoiceFormat

- 특정 범위에 속하는 값을 문자열로 변환(범위에 따른 정수를 문자로 표현 A, A+, B B+..) 

 

 

예제1)

 

import java.text.ChoiceFormat;
public class ChoiceFormatEx1 {

public static void main(String[] args) {
	double[] range = {60, 65, 70, 75, 80, 85, 90, 95}; 
	String[] grades = {"D", "D+", "C", "C+", "B", "B+", "A", "A+"};	
	double[] scores = { 100, 86.6, 70, 60.5, 65.5, 78.6, 93, 80.4 };
			
	ChoiceFormat form = new ChoiceFormat(range,grades);
	for(int i=0;i<scores.length;i++)
		System.out.println(scores[i]+":"+form.format(scores[i]));
	}
}

 

- range 배열은 범위의 경계값을 저장하는 데 사용(반드시 double, 오름차순 정렬)

- grades범위에 포함된 값을 치환할 문자열을 저장하는 데 사용

- ChoiceFormat을 생성할 때는 -> (경계값, 문자열)

- format( )을 사용해서 문자열로 반환!

 

<출력결과>

100.0:A+

86.6:B+

70.0:C

60.5:D

65.5:D+

78.6:C+

93.0:A

80.4:B

 

예제2)

 

import java.text.ChoiceFormat;
public class ChoiceFormatEx2 {

	public static void main(String[] args) {
		String pattern = "60#D|70#C|75#C+|80<B|85#B+|90#A|95#A+";
		int[] scores = { 90, 80, 88, 70, 52, 60, 95 };
		
		ChoiceFormat form = new ChoiceFormat(pattern);
		
		for(int i=0;i<scores.length;i++) 
			System.out.println(scores[i]+":"+form.format(scores[i]));
	}
}

 

- 위의 예제1을  패턴을 사용하도록 변경!(위의 예제에서 range grades의 배열 대신에 패턴을 사용)

- 패턴은 구분자로, ‘#’‘<’ 두가지를 제공하는데 ‘#’는 경계값에 포함시키지만 ‘<’는 포함시키지 않음

 

<출력결과>

90:A
80:C+
88:B+
70:C
52:D
60:D
95:A+

 


MessageFormat

- 데이터를 정해진 양식에 맞게 출력할 수 있도록 도와줌

- 양식을 미리 작성하고, 프로그램을 이용해서 다수의 데이터를 같은 양식으로 출력할 때 사용하면 좋음

 

import java.text.MessageFormat;

public class MessageFormatEx1 {

	public static void main(String[] args) {
		String msg = "Name: {0}\nTel: {1}\nAge: {2}\nBirthday: {3}";
		Object[] argumemts = {"이자바","02-123-4567","30","11월11일"};
		
		String result = MessageFormat.format(msg, argumemts);
		System.out.println(result);
	}
}

 

- MessageFormat에 사용할 양식인 문자열 msg을 작성할 때 {숫자} 이 부분이 데이터가 출력될 자리

- 양식에 들어갈 데이터는 객체배열인 arguments에 지정되어 있다. 

-> 객체 배열이라서 String이외에도 다른 객체들이 지정될 수 있음

 

<출력값>

Name: 이자바
Tel: 02-123-4567
Age: 30
Birthday: 11월11일

'Java' 카테고리의 다른 글

BufferedReader, BufferedWriter, StringTokenizer  (0) 2022.01.17
재귀호출( recursive call)  (0) 2022.01.13
Java.time 패키지  (0) 2022.01.01
Math클래스의 round와 random 메소드  (0) 2021.12.29