全パッケージ  クラス階層  このパッケージ  前項目  次項目  インデックス

クラス java.text.ChoiceFormat

java.lang.Object
   |
   +----java.text.Format
           |
           +----java.text.NumberFormat
                   |
                   +----java.text.ChoiceFormat

public class ChoiceFormat
extends NumberFormat
ChoiceFormatでは、ある範囲の数値にフォーマットを関係付けることができます。これは通常、複数のものを扱うときに MessageFormatで使用します。この選択項目は doubleの昇順リストで指定され、それぞれの項目は、次の項目までの一方が開いた間隔を指定します。
 X matches j if and only if limit[j] <= X < limit[j+1]
 
一致するものがないと、数値(X)が小さ過ぎるか大き過ぎるかによって、最初か最後のインデックスが使用されます。

Note: 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));
 }
 

参照:
DecimalFormat, MessageFormat

Constructor Index

 o ChoiceFormat(double[], String[])
リミットとそれに対応するフォーマットを使って構築します。
 o ChoiceFormat(String)
リミットと、パターンに基づく対応するフォーマットを使って構築します。

Method Index

 o applyPattern(String)
パターンを設定します。
 o clone()
Cloneableをオーバーライドします。
 o equals(Object)
2つが等しいかどうかを比較します。
 o format(double, StringBuffer, FieldPosition)
フォーマットの特殊化です。
 o format(long, StringBuffer, FieldPosition)
フォーマットの特殊化です。
 o getFormats()
構築子の中で渡されるフォーマットを入手します。
 o getLimits()
構築子の中で渡されるリミットを入手します。
 o hashCode()
メッセージフォーマットオブジェクトのハッシュコードを生成します。
 o nextDouble(double)
dより大きな最小の doubleを見つけます。
 o nextDouble(double, boolean)
 o parse(String, ParsePosition)
可能ならば Long を返し(例えば、[Long.MIN_VALUE, Long.MAX_VALUE]の範囲内で 10 進数なし)、そうでなければ Double を返す。
 o previousDouble(double)
dより小さな最大の doubleを見つけます。
 o setChoices(double[], String[])
フォーマットの際に使用する選択項目を設定します。
 o toPattern()
パターンを入手します。

Constructors

 o ChoiceFormat
  public ChoiceFormat(String newPattern)
リミットと、パターンに基づく対応するフォーマットを使って構築します。

 o ChoiceFormat
  public ChoiceFormat(double limits[],
                      String formats[])
リミットとそれに対応するフォーマットを使って構築します。

参照:
setChoices

Methods

 o applyPattern
  public void applyPattern(String newPattern)
パターンを設定します。

パラメータ:
newPattern - クラスの説明を参照してください。
 o toPattern
  public String toPattern()
パターンを入手します。

 o setChoices
  public void setChoices(double limits[],
                         String formats[])
フォーマットの際に使用する選択項目を設定します。

パラメータ:
limits - そのフォーマットで解析したい一番大きな値が入ります。これは昇順でなければなりません。Xをフォーマットする場合、limit[i] <= X < limit[i+1]なら、選択項目は iです。
formats - それぞれのリミットに対して使用するフォーマット。これは、フォーマットオブジェクトか文字列です。オブジェクト Yでフォーマットする場合、オブジェクトが NumberFormatなら、((NumberFormat) Y).format(X)が呼び出されます。そうでなければ、Y.toString()が呼び出されます。
 o getLimits
  public double[] getLimits()
構築子の中で渡されるリミットを入手します。

返り値:
リミット
 o getFormats
  public Object[] getFormats()
構築子の中で渡されるフォーマットを入手します。

返り値:
フォーマット
 o format
  public StringBuffer format(long number,
                             StringBuffer toAppendTo,
                             FieldPosition status)
フォーマットの特殊化です。このメソッドは実際には format(double, StringBuffer, FieldPosition)を呼び出します。したがって、サポートされる longの範囲は、doubleで格納できる範囲に限られます。これが実際的な制限となることはありません。

オーバーライド:
クラス NumberFormatformat
 o format
  public StringBuffer format(double number,
                             StringBuffer toAppendTo,
                             FieldPosition status)
フォーマットの特殊化です。

オーバーライド:
クラス NumberFormatformat
 o parse
  public Number parse(String text,
                      ParsePosition status)
可能ならば Long を返し(例えば、[Long.MIN_VALUE, Long.MAX_VALUE]の範囲内で 10 進数なし)、そうでなければ Double を返します。

オーバーライド:
クラス NumberFormatparse
 o nextDouble
  public static final double nextDouble(double d)
dより大きな最小の doubleを見つけます。NaNなら、同じ値を返します。

一方が開いた間隔を作るのに使用します。

参照:
previousDouble
 o previousDouble
  public static final double previousDouble(double d)
dより小さな最大の doubleを見つけます。NaNなら、同じ値を返します。

参照:
nextDouble
 o clone
  public Object clone()
Cloneableをオーバーライドします。

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

オーバーライド:
クラス NumberFormathashCode
 o equals
  public boolean equals(Object obj)
2つが等しいかどうかを比較します。

オーバーライド:
クラス NumberFormatequals
 o nextDouble
  public static double nextDouble(double d,
                                  boolean positive)

全パッケージ  クラス階層  このパッケージ  前項目  次項目  インデックス