이 추상 클래스는 수에 대한 전반적인 포맷 기능을 제공해 준다. 팩토리 패턴을 사용해 작성된 클래스이므로 new 연산자를 이용해 객체를 생성하는 것이 아닌 getInstance() method를 사용해 인스턴스를 얻는다.
이 클래스로 표현할 수 있는 포맷의 종류는 아래와 같으며, 클래스 생성 시 각 포맷에 해당하는 인스턴스 반환 메서드를 사용한다.
정수형: getIntegerInstance()
통화: getCurrencyInstance()
퍼센트: getPercentInstance()
통화 수치 객체 생성 방법 예시
NumberFormat nf = NumberFormat.getCurrencyInstance();
각 지역의 언어, 나라 등의 정보를 담고 있는 클래스이다.
Locale 객체는 생성자와 Builder를 통해 생성할 수 있다.
1) 생성자를 통한 객체 생성
Locale(String language, String country, String variant)
Locale(String language, String country)
Locale(String language)
// 사용 예시
Locale locale1 = new Locale("en", "US");
Locale locale2 = new Locale("ko");
2) Builder를 통한 객체 생성
Locale locale1 = new Locale.Builder()
.setLanguage("en")
.setRegion("US")
.build();
Locale locale1 = new Locale.Builder()
.setLanguage("ko")
.build();
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double payment = scanner.nextDouble();
scanner.close();
// Write your code here.
String us = NumberFormat.getCurrencyInstance(Locale.US).format(payment);
//통화 수치 객체 생성 예시를 따라 작성한다.
Locale indiaCustomLocale = new Locale("en", "IN");
// 문제에서 인도는 제공되는 기본 Locale이 없어 직접 constuct 해주라고 되어 있다.
String india = NumberFormat.getCurrencyInstance(indiaCustomLocale).format(payment);
String china = NumberFormat.getCurrencyInstance(Locale.CHINA).format(payment);
String france = NumberFormat.getCurrencyInstance(Locale.FRANCE).format(payment);
System.out.println("US: " + us);
System.out.println("India: " + india);
System.out.println("China: " + china);
System.out.println("France: " + france);
}
}