JavaTM 2 Platform
Std. Ed. v1.3

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 スタイルファクトリメソッドではなく、コンストラクタで作成します。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.

関連項目:
DecimalFormat, MessageFormat, 直列化された形式

クラス java.text.NumberFormat から継承したフィールド
FRACTION_FIELD, INTEGER_FIELD
 
コンストラクタの概要
ChoiceFormat(double[] limits, String[] formats)
          指定されたリミットとそれに対応するフォーマットによりオブジェクトを構築します。
ChoiceFormat(String newPattern)
          指定されたパターンに基づくリミットとそれに対応するフォーマットによりオブジェクトを構築します。
 
メソッドの概要
 void applyPattern(String newPattern)
          パターンを設定します。
 Object clone()
          Cloneable をオーバーライドします。
 boolean equals(Object obj)
          2 つが等しいかどうかを比較します。
 StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition status)
          フォーマットされた double でパターンを返します。
 StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition status)
          フォーマットの特殊化です。
 Object[] getFormats()
          コンストラクタの中で渡されるフォーマットを取得します。
 double[] getLimits()
          コンストラクタの中で渡されるリミットを取得します。
 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, getCurrencyInstance, getCurrencyInstance, getInstance, getInstance, getMaximumFractionDigits, getMaximumIntegerDigits, getMinimumFractionDigits, getMinimumIntegerDigits, getNumberInstance, getNumberInstance, getPercentInstance, getPercentInstance, isGroupingUsed, isParseIntegerOnly, parse, parseObject, setGroupingUsed, setMaximumFractionDigits, setMaximumIntegerDigits, setMinimumFractionDigits, setMinimumIntegerDigits, setParseIntegerOnly
 
クラス java.text.Format から継承したメソッド
format, parseObject
 
クラス java.lang.Object から継承したメソッド
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

ChoiceFormat

public ChoiceFormat(String newPattern)
指定されたパターンに基づくリミットとそれに対応するフォーマットによりオブジェクトを構築します。

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()
コンストラクタの中で渡されるリミットを取得します。
戻り値:
リミット

getFormats

public Object[] getFormats()
コンストラクタの中で渡されるフォーマットを取得します。
戻り値:
フォーマット

format

public StringBuffer format(long number,
                           StringBuffer toAppendTo,
                           FieldPosition status)
フォーマットの特殊化です。このメソッドは実際には format(double, StringBuffer, FieldPosition) を呼び出します。したがって、サポートされる long の範囲は、double で格納できる範囲に限られます。これが実際の制限となることはありません。
オーバーライド:
クラス NumberFormat 内の format
クラス java.text.NumberFormat からコピーされたタグ:
関連項目:
Format.format(java.lang.Object)

format

public StringBuffer format(double number,
                           StringBuffer toAppendTo,
                           FieldPosition status)
フォーマットされた double でパターンを返します。
オーバーライド:
クラス NumberFormat 内の format
パラメータ:
number - フォーマットおよび置換される数値
toAppendTo - テキストが追加される位置
status - 使用できる状態が返されないことは無視する

parse

public Number parse(String text,
                    ParsePosition status)
入力テキストから Number を解析します。
オーバーライド:
クラス NumberFormat 内の parse
パラメータ:
text - ソーステキスト
status - 入出力パラメータ。入力時には、status.index フィールドは解析されるソーステキストの最初の文字を示します。出口でエラーが発生しなかった場合は、status.index はソーステキスト内の解析されていない最初の文字に設定されます。出口でエラーが発生した場合は、status.index は変更されず、status.errorIndex は解析が失敗した原因となった文字の最初のインデックスに設定されます。
戻り値:
解析された数値を表す Number

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 をオーバーライドします。
オーバーライド:
クラス NumberFormat 内の clone
クラス java.lang.Object からコピーされたタグ:
戻り値:
このインスタンスの複製
例外:
CloneNotSupportedException - オブジェクトのクラスが Cloneable インタフェースをサポートしていない場合。clone メソッドをオーバーライドしたサブクラスも、インスタンスを複製できないことを示すためにこの例外をスローすることがある
OutOfMemoryError - 十分なメモリがない場合
関連項目:
Cloneable

hashCode

public int hashCode()
メッセージフォーマットオブジェクトのハッシュコードを生成します。
オーバーライド:
クラス NumberFormat 内の hashCode
クラス java.lang.Object からコピーされたタグ:
戻り値:
このオブジェクトのハッシュコード値
関連項目:
Object.equals(java.lang.Object), Hashtable

equals

public boolean equals(Object obj)
2 つが等しいかどうかを比較します。
オーバーライド:
クラス NumberFormat 内の equals
クラス java.lang.Object からコピーされたタグ:
パラメータ:
obj - 比較対象の参照オブジェクト
戻り値:
obj 引数に指定されたオブジェクトとこのオブジェクトが等しい場合は true、そうでない場合は false
関連項目:
Boolean.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.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.