Spec-Zone .ru
спецификации, руководства, описания, API
|
public class ChoiceFormat extends NumberFormat
ChoiceFormat
позволяет Вам присоединять формат к диапазону чисел. Это обычно используется в a MessageFormat
для того, чтобы обработать множественные числа. Выбор определяется с возрастающим списком, удваивается, где каждый элемент определяет полуоткрытый интервал до следующего элемента: Если там не идет ни в какое сравнение, то или первый или последний индекс используется, в зависимости от того, слишком низок ли номер (X) или слишком высок. Если предельный массив не будет в порядке возрастания, то результаты форматирования будут неправильными. ChoiceFormat также принимаетX matches j if and only if limit[j] <= X < limit[j+1]
\u221E
как эквивалентный бесконечности (INF).
Отметьте:
ChoiceFormat
отличается от другого Format
классы в этом Вы создаете a ChoiceFormat
объект с конструктором (не с a getInstance
метод фабрики стиля). Методы фабрики не необходимы потому что ChoiceFormat
не требует никакой сложной установки для данной локали. Фактически, ChoiceFormat
не реализует локали определенное поведение.
Создавая a ChoiceFormat
, следует определить массив форматов и массив пределов. Длина этих массивов должна быть тем же самым. Например,
nextDouble
может использоваться, чтобы получить следующее, выше двойное, сделать полуоткрытый интервал.) Вот простой пример, который показывает форматирование и парсинг:
Вот более сложный пример с форматом образца: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.
Форматы выбора не синхронизируются. Рекомендуется создать отдельные экземпляры формата для каждого потока. Если многократные потоки получают доступ к формату одновременно, он должен синхронизироваться внешне.
DecimalFormat
, MessageFormat
, Сериализированная ФормаNumberFormat. Поле
FRACTION_FIELD, INTEGER_FIELD
Конструктор и Описание |
---|
ChoiceFormat(double[] limits, String[] formats)
Конструкции с пределами и соответствующими форматами.
|
ChoiceFormat(String newPattern)
Конструкции с пределами и соответствующими форматами, основанными на образце.
|
Модификатор и Тип | Метод и Описание |
---|---|
void |
applyPattern(String newPattern)
Устанавливает образец.
|
Объект |
clone()
Переопределения Cloneable
|
boolean |
equals(Object obj)
Равенство comparision между два
|
StringBuffer |
format(double number, StringBuffer toAppendTo, FieldPosition status)
Образец возвратов с двойным отформатированным.
|
StringBuffer |
format(long number, StringBuffer toAppendTo, FieldPosition status)
Специализация формата.
|
Объект[] |
getFormats()
Передайте форматы в конструкторе.
|
double[] |
getLimits()
Передайте пределы в конструкторе.
|
int |
hashCode()
Генерирует хэш-код для объекта формата сообщения.
|
static double |
nextDouble(double d)
Находит наименее двойное большее чем d.
|
static double |
nextDouble(double d, boolean positive)
Находит наименее двойное большее чем d (если положительный == истина), или самые большие двойные меньше чем d (если положительный == ложь).
|
Число |
parse(String text, ParsePosition status)
Анализирует Число из входного текста.
|
static double |
previousDouble(double d)
Находит самые большие двойные меньше чем d.
|
void |
setChoices(double[] limits, String[] formats)
Установите варианты, которые будут использоваться в форматировании.
|
Строка |
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)
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, выбором будет я, где предел [я] <= X <предел [i+1]. Если предельный массив не будет в порядке возрастания, то результаты форматирования будут неправильными.formats
- форматы, которые Вы хотите использовать для каждого предела. Они могут быть или объектами Формата или Строками. Форматируя с объектом 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)
таким образом диапазон longs, которые поддерживаются, только равен диапазону, который может быть сохранен двойным. Это никогда не будет практическим ограничением.format
в классе NumberFormat
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)
Используемый, чтобы сделать полуоткрытые интервалы.
previousDouble(double)
public static final double previousDouble(double d)
nextDouble(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
если этот объект является тем же самым как obj параметром; false
иначе.Object.hashCode()
, HashMap
public static double nextDouble(double d, boolean positive)
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.