public class ChoiceFormat extends NumberFormat
ChoiceFormat
を使用すると、ある範囲の数値にフォーマットを追加することができます。これは通常、複数を処理するときにMessageFormat
で使用されます。この選択項目はdoubleの昇順リストで指定され、それぞれの項目は、次の項目までの一方が開いた間隔を指定します。
一致するものがない場合、数値(X)が小さすぎるのか大きすぎるのかによって、最初または最後のインデックスが使用されます。リミット配列が昇順でない場合、フォーマットの結果は正しくならない。ChoiceFormatはまた、X matches j if and only if limit[j] ≤ X < limit[j+1]
\u221E
をinfinity(INF)と同等なものとして受け付けます。
注: ChoiceFormat
は、他のFormat
クラスとは次の点で異なります。ChoiceFormat
オブジェクトは、getInstance
スタイル・ファクトリ・メソッドではなく、コンストラクタで作成します。ChoiceFormat
では、指定されたロケールに対して複雑なセット・アップは必要ないので、ファクトリ・メソッドは不要です。実際、ChoiceFormat
には、ロケール固有の動作は実装されません。
ChoiceFormat
を作成する場合には、フォーマットの配列とリミットの配列を指定する必要があります。これらの配列の長さは同じである必要があります。次に例を示します。
nextDouble
は、次に大きなdoubleを取得して、一方が開いた間隔を作るのに使用する)
次に、フォーマットと解析を行う簡単な例を示します。
次に、パターン・フォーマットを使うさらに複雑な例を示します。double[] limits = {1,2,3,4,5,6,7}; String[] dayOfWeekNames = {"Sun","Mon","Tue","Wed","Thur","Fri","Sat"}; ChoiceFormat form = new ChoiceFormat(limits, dayOfWeekNames); 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フォーマットは同期化されません。スレッドごとに別のフォーマット・インスタンスを作成することをお薦めします。複数のスレッドがフォーマットに並行してアクセスする場合は、外部的に同期化する必要があります。
NumberFormat.Field
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 (positive がtrue の場合)より大きな最小のdouble、またはd (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()
パターンを取得します。
|
format, format, format, getAvailableLocales, getCurrency, getCurrencyInstance, getCurrencyInstance, getInstance, getInstance, getIntegerInstance, getIntegerInstance, getMaximumFractionDigits, getMaximumIntegerDigits, getMinimumFractionDigits, getMinimumIntegerDigits, getNumberInstance, getNumberInstance, getPercentInstance, getPercentInstance, getRoundingMode, isGroupingUsed, isParseIntegerOnly, parse, parseObject, setCurrency, setGroupingUsed, setMaximumFractionDigits, setMaximumIntegerDigits, setMinimumFractionDigits, setMinimumIntegerDigits, setParseIntegerOnly, setRoundingMode
format, formatToCharacterIterator, parseObject
public ChoiceFormat(String newPattern)
newPattern
- 新しいパターン文字列applyPattern(java.lang.String)
public ChoiceFormat(double[] limits, String[] formats)
limits
- 昇順のリミットformats
- 対応するフォーマット文字列setChoices(double[], java.lang.String[])
public void applyPattern(String newPattern)
newPattern
- クラスの説明を参照。public String toPattern()
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()が呼び出される。public double[] getLimits()
public Object[] getFormats()
public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition status)
format(double, StringBuffer, FieldPosition)
を呼び出します。したがって、サポートされるlongの範囲は、doubleで格納できる範囲に限られます。これが実際の制限となることはありません。format
、クラス: NumberFormat
number
- フォーマットするlong数値toAppendTo
- フォーマット後のテキストを付加するStringBufferstatus
- フィールドの位置Format.format(java.lang.Object)
public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition status)
format
、クラス: NumberFormat
number
- フォーマットおよび置換される数値。toAppendTo
- テキストが追加される位置。status
- 使用できる状態が返されないことは無視する。Format.format(java.lang.Object)
public Number parse(String text, ParsePosition status)
parse
、クラス: NumberFormat
text
- ソース・テキスト。status
- 入出力パラメータ。入力時には、status.indexフィールドは解析されるソース・テキストの最初の文字を示す。出口でエラーが発生しなかった場合は、status.indexはソース・テキスト内の解析されていない最初の文字に設定される。出口でエラーが発生した場合は、status.indexは変更されず、status.errorIndexは解析が失敗した原因となった文字の最初のインデックスに設定される。NumberFormat.isParseIntegerOnly()
, Format.parseObject(java.lang.String, java.text.ParsePosition)
public static final double nextDouble(double d)
d
より大きな最小のdoubleを見つけます。NaN
の場合は、同じ値を返します。
一方が開いた間隔を作るのに使用します。
d
- 参照値d
より大きな最小のdoublepreviousDouble(double)
public static final double previousDouble(double d)
d
より小さな最大のdoubleを見つけます。NaN
の場合は、同じ値を返します。d
- 参照値d
より小さな最大のdoublenextDouble(double)
public Object clone()
clone
、クラス: NumberFormat
Cloneable
public int hashCode()
hashCode
、クラス: NumberFormat
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
equals
、クラス: NumberFormat
obj
- 比較対象の参照オブジェクト。true
、それ以外の場合はfalse
。Object.hashCode()
、HashMap
public static double nextDouble(double d, boolean positive)
d
(positive
がtrue
の場合)より大きな最小のdouble、またはd
(positive
がfalse
の場合)より小さな最大のdoubleを見つけます。NaN
の場合は、同じ値を返します。これらのメンバー関数が、Double.longBitsToDouble(long)、Double.doubleToLongBits(double)、Double.isNaN(double)ではない場合、浮動小数点のフラグに影響しません。d
- 参照値positive
- 最小のdoubleが必要な場合はtrue
、そうでない場合はfalse
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.