|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.text.Format java.text.NumberFormat java.text.ChoiceFormat
public class ChoiceFormat
ChoiceFormat
允許將格式應用到某個範圍的數。它通常用於在 MessageFormat
中處理複數。使用按升序排列的 double 列表指定 choice,列表中每一項都指定一個到下一項的半開區間:
如果不比對,則根據數 (X) 的是太小還是太大,選擇使用第一個或最後一個索引。如果 limit 陣列不按升序排列,則格式化的結果將不正確。ChoiceFormat 還接受當且僅當 limit[j] <= X < limit[j+1] 時,X 比對 j
\u221E
(等同於無窮大 (INF))。
註:ChoiceFormat
不同於其他 Format
類別,因為 ChoiceFormat
物件是通過建構子創建的(而不是通過 getInstance
樣式處理器方法)。處理器方法不是必需的,因為 ChoiceFormat
不要求針對給定語言環境進行任何複雜的設置。事實上,ChoiceFormat
並不實作任何特定於語言環境的行為。
創建 ChoiceFormat
時,必須指定一個 format 陣列和一個 limit 陣列。這些陣列的長度必須相同。例如,
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 格式不是同步的。建議為每個執行緒創建單獨的格式實例。如果多個執行緒共時存取一個格式,則它必須保持外部同步。
DecimalFormat
,
MessageFormat
,
序列化表格巢狀類別摘要 |
---|
從類別 java.text.NumberFormat 繼承的巢狀類別/介面 |
---|
NumberFormat.Field |
欄位摘要 |
---|
從類別 java.text.NumberFormat 繼承的欄位 |
---|
FRACTION_FIELD, INTEGER_FIELD |
建構子摘要 | |
---|---|
ChoiceFormat(double[] limits,
String[] formats)
根據 limit 和相應的 format 建構。 |
|
ChoiceFormat(String newPattern)
根據 limit 和相應的 format(基於網要)建構。 |
方法摘要 | |
---|---|
void |
applyPattern(String newPattern)
設置網要。 |
Object |
clone()
覆寫 Cloneable |
boolean |
equals(Object obj)
兩個物件之間的相等性比較。 |
StringBuffer |
format(double number,
StringBuffer toAppendTo,
FieldPosition status)
返回帶已格式化 double 的網要。 |
StringBuffer |
format(long number,
StringBuffer toAppendTo,
FieldPosition status)
特殊格式。 |
Object[] |
getFormats()
獲取傳入建構子的 format。 |
double[] |
getLimits()
獲取傳入建構子的 limit。 |
int |
hashCode()
為訊息格式物件產生雜湊碼。 |
static double |
nextDouble(double d)
尋找大於 d 的最小 double 值。 |
static double |
nextDouble(double d,
boolean positive)
尋找大於 d 的最小 double 值(如果 positive == true),或者小於 d 的最大值(如果 positive == false)。 |
Number |
parse(String text,
ParsePosition status)
解析輸入文本中的一個 Number。 |
static double |
previousDouble(double d)
尋找小於 d 的最大 double 值。 |
void |
setChoices(double[] limits,
String[] formats)
設置要在格式化中使用的 choice。 |
String |
toPattern()
獲取網要。 |
從類別 java.text.Format 繼承的方法 |
---|
format, formatToCharacterIterator, parseObject |
從類別 java.lang.Object 繼承的方法 |
---|
finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
建構子詳細資訊 |
---|
public ChoiceFormat(String newPattern)
applyPattern(java.lang.String)
public ChoiceFormat(double[] limits, String[] formats)
setChoices(double[], java.lang.String[])
方法詳細資訊 |
---|
public void applyPattern(String newPattern)
newPattern
- 參見類別描述。public String toPattern()
public void setChoices(double[] limits, String[] formats)
limits
- 套件含要使用該格式進行解析的最大值,應該按升序排列。格式化 X 時,如果 limit[i] <= X < limit[i+1],則 choice 為 i。如果 limit 陣列不按升序排列,則格式化的結果將不正確。formats
- 要為每個 limit 使用的格式。格式可以是 Format 物件或 String。用物件 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 存儲的範圍。這不是一個實用的限制。
NumberFormat
中的 format
Format.format(java.lang.Object)
public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition status)
NumberFormat
中的 format
number
- 要格式化或替換的數。toAppendTo
- 將文本添加到的地方。status
- 忽略,無有用的狀態返回。Format.format(java.lang.Object)
public Number parse(String text, ParsePosition status)
NumberFormat
中的 parse
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)
用於形成半開區間。
previousDouble(double)
public static final double previousDouble(double d)
nextDouble(double)
public Object clone()
NumberFormat
中的 clone
Cloneable
public int hashCode()
NumberFormat
中的 hashCode
Object.equals(java.lang.Object)
,
Hashtable
public boolean equals(Object obj)
NumberFormat
中的 equals
obj
- 要與之比較的參考物件。
true
;否則返回 false
。Object.hashCode()
,
Hashtable
public static double nextDouble(double d, boolean positive)
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。