JavaTM 2
Platform
Std.  Ed.  v1. 4.0

java.text
클래스 ChoiceFormat

java.lang.Object 
  |
  +--java.text.Format 
        |
        +--java.text.NumberFormat 
              |
              +--java.text.ChoiceFormat
모든 구현 인터페이스:
Cloneable , Serializable

public class ChoiceFormat
extends NumberFormat

ChoiceFormat 를 사용하면(자), 어느 범위의 수치에 포맷을 추가할 수가 있습니다. 이것은 통상, 복수를 처리할 경우에 MessageFormat 로 사용됩니다. 이 선택 항목은 double 의 승순 리스트로 지정되어 각각의 항목은 다음의 항목까지의 한편이 열린 간격을 지정합니다.

 X 는  limit[j] <= X < limit[j+1] 의 경우에만 j 에 일치한다
일치하는 것이 없는 경우, 수치 (X)가 너무 작은지 너무 큰지에 의해, 최초 또는 마지막 인덱스가 사용됩니다. 리밋트 배열이 승순이 아닌 경우, 포맷의 결과는 올바르지는 않습니다. ChoiceFormat 는 또,\u221E 를 infinity(INF)와 동등한 것으로 해 받아들입니다.

주: ChoiceFormat 는 다른 Format 클래스와는 다음의 점으로써 다릅니다. ChoiceFormat 오브젝트는 getInstance 스타일 팩토리 메소드는 아니고, constructor 으로 작성합니다. ChoiceFormat 에서는 지정된 로케일에 대해서 복잡한 셋업은 필요없기 때문에, 팩토리 메소드는 불필요합니다. 실제,ChoiceFormat 에는 로케일 고유의 동작은 구현되지 않습니다.

ChoiceFormat 를 작성하는 경우에는 포맷의 배열과 리밋트의 배열을 지정할 필요가 있습니다. 이러한 배열의 길이는 같지 않으면 안됩니다. 다음에 예를 나타냅니다.

다음에, 포맷과 해석을 실시하는 간단한 예를 나타냅니다.

 double[] limits = {1,2,3,4,5,6,7};
 String[] monthNames = {"Sun","Mon","Tue","Wed","Thur","Fri","Sat"};
 ChoiceFormat form = new ChoiceFormat(limits, monthNames);
 ParsePosition status = new ParsePosition(0);
 for (double i = 0.0; i <= 8.0; ++i) {
     status.setIndex(0);
     System.out.println(i + " -> " + form.format(i) + " -> "
                              + form.parse(form.format(i), status));
 }
 
다음에, 패턴 포맷을 사용하고 말이야들에게 복잡한 예를 나타냅니다.
 double[] filelimits = {0,1,2};
 String[] filepart = {"are no files","is one file","are {2} files"};
 ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
 Format[] testFormats = {fileform, null, NumberFormat.getInstance()};
 MessageFormat pattform = new MessageFormat("There {0} on {1}");
 pattform.setFormats(testFormats);
 Object[] testArgs = {null, "ADisk", null};
 for (int i = 0; i < 4; ++i) {
     testArgs[0] = new Integer(i);
     testArgs[2] = testArgs[0];
     System.out.println(pattform.format(testArgs));
 }
 

ChoiceFormat 오브젝트의 패턴 지정은 매우 간단합니다. 다음에 예를 나타냅니다.

 ChoiceFormat fmt = new ChoiceFormat(
      "-1#is negative| 0#is zero or fraction | 1#is one |1. 0<is 1+ |2#is two |2<is more than 2. ");
 System.out.println("Formatter Pattern : " + fmt.toPattern());

 System.out.println("Format with -INF : " + fmt.format(Double.NEGATIVE_INFINITY));
 System.out.println("Format with -1. 0 : " + fmt.format(-1. 0));
 System.out.println("Format with 0 : " + fmt.format(0));
 System.out.println("Format with 0.9 : " + fmt.format(0.9));
 System.out.println("Format with 1.0 : " + fmt.format(1));
 System.out.println("Format with 1.5 : " + fmt.format(1.5));
 System.out.println("Format with 2 : " + fmt.format(2));
 System.out.println("Format with 2.1 : " + fmt.format(2.1));
 System.out.println("Format with NaN : " + fmt.format(Double.NaN));
 System.out.println("Format with +INF : " + fmt.format(Double.POSITIVE_INFINITY));
 
출력 결과는 다음과 같이 됩니다.
 
Format with -INF : is negative Format with -1. 0 : is negative Format with 0 : is zero or fraction Format with 0.9 : is zero or fraction Format with 1.0 : is one Format with 1.5 : is 1+ Format with 2 : is two Format with 2.1 : is more than 2. Format with NaN : is negative Format with +INF : is more than 2.

동기

choice 포맷은 동기화 되지 않습니다. thread 마다 다른 포맷 인스턴스를 작성하는 것을 추천합니다. 복수의 thread가 포맷에 동시에 액세스 하는 경우는 외부적으로 동기화할 필요가 있습니다.

관련 항목:
DecimalFormat , MessageFormat , 직렬화 된 형식

중첩된 클래스의 개요
 
클래스 java.text. NumberFormat 을 상속받은 중첩된 클래스
NumberFormat.Field
 
클래스 java.text. Format 을 상속받은 중첩된 클래스
Format.Field
 
필드의 개요
 
클래스 java.text. NumberFormat 에서 상속받은 필드
FRACTION_FIELD , INTEGER_FIELD
 
생성자의 개요
ChoiceFormat (double[] limits, String [] formats)
          지정된 리밋트와 거기에 대응하는 포맷에 의해 오브젝트를 구축합니다.
ChoiceFormat (String  newPattern)
          지정된 패턴에 근거하는 리밋트와 거기에 대응하는 포맷에 의해 오브젝트를 구축합니다.
 
메소드의 개요
 void applyPattern (String  newPattern)
          패턴을 설정합니다.
 Object clone ()
          Cloneable 를 오버라이드(override) 합니다.
 boolean equals (Object  obj)
          2 개가 동일한지 어떤지를 비교합니다.
 StringBuffer format (double number, StringBuffer  toAppendTo, FieldPosition  status)
          포맷 된 double 로 패턴을 돌려줍니다.
 StringBuffer format (long number, StringBuffer  toAppendTo, FieldPosition  status)
          포맷의 특수화입니다.
 Object [] getFormats ()
          constructor 중(안)에서 건네받는 포맷을 취득합니다.
 double[] getLimits ()
          constructor 중(안)에서 건네받는 리밋트를 취득합니다.
 int hashCode ()
          메세지 포맷 오브젝트의 해시 코드를 생성합니다.
static double nextDouble (double d)
          d 보다 큰 최소의 double 를 찾아냅니다.
static double nextDouble (double d, boolean positive)
          d (if positive == true)보다 큰 최소의 double, 또는 d (if positive == false)보다 작은 최대의 double 를 찾아냅니다.
 Number parse (String  text, ParsePosition  status)
          입력 텍스트로부터 Number 를 해석합니다.
static double previousDouble (double d)
          d 보다 작은 최대의 double 를 찾아냅니다.
 void setChoices (double[] limits, String [] formats)
          포맷 시에 사용하는 선택 항목을 설정합니다.
 String toPattern ()
          패턴을 취득합니다.
 
클래스 java.text. NumberFormat 에서 상속받은 메소드
format , format , format , getAvailableLocales , getCurrency , getCurrencyInstance , getCurrencyInstance , getInstance , getInstance , getIntegerInstance , getIntegerInstance , getMaximumFractionDigits , getMaximumIntegerDigits , getMinimumFractionDigits , getMinimumIntegerDigits , getNumberInstance , getNumberInstance , getPercentInstance , getPercentInstance , isGroupingUsed , isParseIntegerOnly , parse , parseObject , setCurrency , setGroupingUsed , setMaximumFractionDigits , setMaximumIntegerDigits , setMinimumFractionDigits , setMinimumIntegerDigits , setParseIntegerOnly
 
클래스 java.text. Format 에서 상속받은 메소드
format , formatToCharacterIterator , parseObject
 
클래스 java.lang. Object 에서 상속받은 메소드
finalize , getClass , notify , notifyAll , toString , wait , wait , wait
 

생성자의 상세

ChoiceFormat

public ChoiceFormat(String  newPattern)
지정된 패턴에 근거하는 리밋트와 거기에 대응하는 포맷에 의해 오브젝트를 구축합니다.

관련 항목:
applyPattern(java.lang.String)

ChoiceFormat

public ChoiceFormat(double[] limits,
                    String [] formats)
지정된 리밋트와 거기에 대응하는 포맷에 의해 오브젝트를 구축합니다.

관련 항목:
setChoices(double[], java.lang.String[])
메소드의 상세

applyPattern

public void applyPattern(String  newPattern)
패턴을 설정합니다.

파라미터:
newPattern - 클래스의 설명을 참조

toPattern

public String  toPattern()
패턴을 취득합니다.


setChoices

public void setChoices(double[] limits,
                       String [] formats)
포맷 시에 사용하는 선택 항목을 설정합니다.

파라미터:
limits - 그 포맷으로 해석하는 1 번 큰 값. 이것은 승순이 아니면 안된다. X 를 포맷 하는 경우, limit[i] <= X < limit[i+1] 이면, 선택 항목은 i 가 된다. 리밋트 배열이 승순이 아닌 경우, 포맷의 결과는 올바르게 안 되는
formats - 각각의 리밋트에 대해서 사용하는 포맷. 이것은 Format 오브젝트나 캐릭터 라인이다. 오브젝트 Y 로 포맷 하는 경우, 오브젝트가 NumberFormat 이면, ((NumberFormat) Y). format(X)가 불려 간다. 그렇지 않으면, Y.toString()가 불려 간다

getLimits

public double[] getLimits()
constructor 중(안)에서 건네받는 리밋트를 취득합니다.

반환값:
리밋트

getFormats

public Object [] getFormats()
constructor 중(안)에서 건네받는 포맷을 취득합니다.

반환값:
포맷

format

public StringBuffer  format(long number,
                           StringBuffer  toAppendTo,
                           FieldPosition  status)
포맷의 특수화입니다. 이 메소드는 실제로는 format(double, StringBuffer, FieldPosition) 를 호출합니다. 따라서, 서포트되는 long 의 범위는 double 로 저장할 수 있는 범위에 한정됩니다. 이것이 실제의 제한이 될 것은 없습니다.

정의:
클래스 NumberFormat 내의 format
관련 항목:
Format.format(java.lang.Object)

format

public StringBuffer  format(double number,
                           StringBuffer  toAppendTo,
                           FieldPosition  status)
포맷 된 double 로 패턴을 돌려줍니다.

정의:
클래스 NumberFormat 내의 format
파라미터:
number - 포맷 및 치환되는 수치
toAppendTo - 텍스트가 추가되는 위치
status - 사용할 수 있는 상태가 돌려주어지지 않은 것은 무시하는
관련 항목:
Format.format(java.lang.Object)

parse

public Number  parse(String  text,
                    ParsePosition  status)
입력 텍스트로부터 Number 를 해석합니다.

정의:
클래스 NumberFormat 내의 parse
파라미터:
text - 소스 텍스트
status - 입출력 파라미터. 입력시에는 status.index 필드는 해석되는 소스 텍스트의 최초의 캐릭터를 나타냅니다. 출구에서 에러가 발생하지 않았던 경우는 status.index 는 소스 텍스트내의 해석되어 있지 않은 최초의 캐릭터로 설정됩니다. 출구에서 에러가 발생했을 경우는 status.index 는 변경되지 않고 status.errorIndex 는 해석이 실패한 원인이 된 캐릭터의 최초의 인덱스로 설정됩니다.
반환값:
해석된 수치를 나타내는 Number
관련 항목:
NumberFormat.isParseIntegerOnly() , Format.parseObject(java.lang.String, java.text.ParsePosition)

nextDouble

public static final double nextDouble(double d)
d 보다 큰 최소의 double 를 찾아냅니다. NaN 의 경우는 같은 값을 돌려줍니다.

한편이 열린 간격을 만드는데 사용합니다.

관련 항목:
previousDouble(double)

previousDouble

public static final double previousDouble(double d)
d 보다 작은 최대의 double 를 찾아냅니다. NaN 의 경우는 같은 값을 돌려줍니다.

관련 항목:
nextDouble(double)

clone

public Object  clone()
Cloneable 를 오버라이드(override) 합니다.

오버라이드(override):
클래스 NumberFormat 내의 clone
반환값:
이 인스턴스의 복제

hashCode

public int hashCode()
메세지 포맷 오브젝트의 해시 코드를 생성합니다.

오버라이드(override):
클래스 NumberFormat 내의 hashCode
반환값:
이 오브젝트의 해시 코드치
관련 항목:
Object.equals(java.lang.Object) , Hashtable

equals

public boolean equals(Object  obj)
2 kr이 동일한지 어떤지를 비교합니다.

오버라이드(override):
클래스 NumberFormat 내의 equals
파라미터:
obj - 비교 대상의 참조 오브젝트
반환값:
obj 인수로 지정된 오브젝트와 이 오브젝트가 동일한 경우는 true, 그렇지 않은 경우는 false
관련 항목:
Object.hashCode() , Hashtable

nextDouble

public static double nextDouble(double d,
                                boolean positive)
d (if positive == true)보다 큰 최소의 double, 또는 d (if positive == false)보다 작은 최대의 double 를 찾아냅니다. NaN 의 경우는 같은 값을 돌려줍니다. 이러한 멤버 함수가, Double.longBitsToDouble(long), Double.doubleToLongBits(double), Double.isNaN(double)가 아닌 경우, 부동 소수점의 플래그에 영향을 주지 않습니다.


JavaTM 2
Platform
Std.  Ed.  v1. 4.0

버그의 보고와 기능의 리퀘스트
이외의 API 레퍼런스 및 개발자용 문서에 대해서는 Java 2 SDK SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Java, Java 2 D, 및 JDBC 는 미국 및 그 외의 나라에 있어서의 미국 Sun Microsystems, Inc. 의 상표 혹은 등록상표입니다.
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.