본문 바로가기
DEV/Java

[자바] ChoiceFormat

by 어쩌다개발 2023. 2. 2.
반응형

특정 범위에 속하는 값을 문자열로 변환해준다.

import java.text.ChoiceFormat;

public class ChiceFormatEx1 {

    public static void main(String[] args) {

        double[] limits = {50, 60, 70, 80, 90}; //낮은값->큰값, 오름차순
        String[] grades = {"F", "D", "C", "B", "A"}; //경계값에 정의된 범위의 개수와 일치해야 됨

        int[] scores = {100, 60, 45, 95, 88, 70, 52, 60, 30, 70};

        ChoiceFormat form = new ChoiceFormat(limits, grades);

        for(int score : scores) {
            System.out.println(score + ": " + form.format(score));
        }
    }
}

결과

100: A
60: D
45: F
95: A
88: B
70: C
52: F
60: D
30: F
70: C

두 개의 배열 중 하나(limits)는 범위의 경계값을 저장하는데 사용하였고, 또 하나(grades)는 범위에 포함된 값을 치환 할 문자열을 저장하는데 사용되었다.

경계값은 double형으로 반드시 모두 오름차순으로 정렬되어 있어야 하며, 치환 될 문자 열의 개수는 경계값에 의해 정의된 범위의 개수와 일치해야 하며, 그렇지 않으면 IllegalArgumentException이 발생한다.

아래와 같이 패턴으로도 사용 가능하다. 패턴은 '#'와 '<' 두 가지를 제공한다.

import java.text.ChoiceFormat;

public class ChoiceFormatEx2 {

    public static void main(String[] args) {

        String pattern = "50#F|60#D|70#C|80#B|90#A";
        int[] scores = {100, 60, 45, 95, 88, 70, 52, 60, 30, 70};

        ChoiceFormat form = new ChoiceFormat(pattern);

        for(int score : scores) {
            System.out.println(score + ": " + form.format(score));
        }
        
    }
}

결과

100: A
60: D
45: F
95: A
88: B
70: C
52: F
60: D
30: F
70: C

 

반응형

'DEV > Java' 카테고리의 다른 글

[자바] java.time 패키지  (5) 2023.02.03
[자바] MessageFormat  (3) 2023.02.02
[자바] SimpleDateFormat  (2) 2023.02.02
[자바] 형식화 클래스  (1) 2023.02.02
[자바] Calendar  (0) 2023.02.02

댓글