JavaTM 2 Platform
Standard Ed. 5.0

java.text
クラス ChoiceFormat

java.lang.Object
  上位を拡張 java.text.Format
      上位を拡張 java.text.NumberFormat
          上位を拡張 java.text.ChoiceFormat
すべての実装されたインタフェース:
Serializable, Cloneable

public class ChoiceFormat
extends NumberFormat

ChoiceFormat を使用すると、ある範囲の数値にフォーマットを追加することができます。これは通常、複数を処理するときに MessageFormat で使用されます。この選択項目は double の昇順リストで指定され、それぞれの項目は、次の項目までの一方が開いた間隔を指定します。


 X matches j if and only if limit[j] <= X < limit[j+1]
 
一致するものがない場合、数値 (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.

同期

choice フォーマットは同期化されません。スレッドごとに別のフォーマットインスタンスを作成することをお勧めします。複数のスレッドがフォーマットに同時にアクセスする場合は、外部的に同期化する必要があります。

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

入れ子のクラスの概要
 
クラス java.text.NumberFormat から継承された入れ子のクラス/インタフェース
NumberFormat.Field
 
フィールドの概要
 
クラス 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, 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()
コンストラクタの中で渡されるリミットを取得します。

戻り値:
リミット

getFormats

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

戻り値:
フォーマット

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 をオーバーライドします。

オーバーライド:
クラス NumberFormat 内の clone
戻り値:
このインスタンスの複製
関連項目:
Cloneable

hashCode

public int hashCode()
メッセージフォーマットオブジェクトのハッシュコードを生成します。

オーバーライド:
クラス NumberFormat 内の hashCode
戻り値:
このオブジェクトのハッシュコード値
関連項目:
Object.equals(java.lang.Object), Hashtable

equals

public boolean equals(Object obj)
2 つが等しいかどうかを比較します。

オーバーライド:
クラス 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
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。