Лучший способ проанализировать плавание?

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

41
задан mskfisher 9 May 2012 в 14:23
поделиться

10 ответов

Зависит, куда вход прибывает из.

, Если Ваш вход прибывает от пользователя, необходимо использовать CultureInfo, который использует пользователь/страница ( Поток. CurrentThread. CurrentUICulture).

можно добраться и признак культуры пользователя путем рассмотрения HttpRequest. Свойство UserLanguages. (Не исправляют 100%, но я нашел его очень хорошим первым предположением) С той информацией, можно установить эти Поток. CurrentThread. CurrentUICulture в начале страницы.

, Если Ваш вход прибывает из внутреннего источника, можно использовать InvariantCulture для парсинга строки.

метод Синтаксического анализа несколько легче использовать, если Ваш вход из управляемого источника. Таким образом, Вы уже проверили строку. Синтаксический анализ выдает (медленное) исключение если его сбои.

, Если вход неконтролируем, (от пользователя или другого интернет-источника) , TryParse выглядит лучше мне.

26
ответ дан GvS 27 November 2019 в 00:25
поделиться

Я соглашаюсь с ответом leppie; помещать это с точки зрения кода:

string s = "123,456.789";
float f = float.Parse(s, CultureInfo.InvariantCulture);
50
ответ дан Sam 27 November 2019 в 00:25
поделиться

Если Вы хотите, сохраняют значения (числа, дата, время, и т.д....) для внутренней цели. Каждый раз используйте "InvariantCulture" для форматирования & парсинг значений. "InvariantCulture" - то же на каждом компьютере, каждой ОС с культурой/языком/и т.д. любого пользователя...

string strFloat = (15.789f).ToString(System.Globalization.CultureInfo.InvariantInfo);
float numFloat  = float.Parse(System.Globalization.CultureInfo.InvariantInfo, strFloat);
string strNow   = DateTime.Now.ToString(System.Globalization.CultureInfo.InvariantInfo);
DateTime now    = DateTime.Parse(System.Globalization.CultureInfo.InvariantInfo, strNow);
7
ответ дан AustinWBryan 27 November 2019 в 00:25
поделиться

Вы могли всегда использовать перегрузку Синтаксический анализ , который включает культуру для использования?

, Например:

double number = Double.Parse("42,22", new CultureInfo("nl-NL").NumberFormat); // dutch number formatting

, Если Вы управляете всеми своими данными, необходимо использовать "CultureInfo. InvariantCulture" во всем Вашем коде.

6
ответ дан AustinWBryan 27 November 2019 в 00:25
поделиться

Передача в CultureInfo или NumberFormatInfo, который представляет культуру, Вы хотите проанализировать плавание как; это управляет тем, какие символы используются для десятичных чисел, разделителей группы, и т.д.

, Например, чтобы гарантировать, что '.' символ рассматривали как десятичный индикатор, который Вы могли передать в CultureInfo. InvariantCulture (этот обычно очень полезен в серверных приложениях, где Вы склонны хотеть вещи быть тем же независимо от культуры среды).

1
ответ дан Greg Beech 27 November 2019 в 00:25
поделиться

Используйте нейтральную культуру (или один Вы знаете) при парсинге с Попыткой/Синтаксическим анализом.

3
ответ дан leppie 27 November 2019 в 00:25
поделиться

Источник является входом от веб-сайта. Я не могу полагаться на него являющийся допустимым. Таким образом, я пошел с TryParse, как упомянуто прежде. Но я не могу выяснить, как дать currentCulture ему.

кроме того, это дало бы мне культуру сервера, на котором она в настоящее время работает, но так как это - Всемирная паутина, пользователь может быть отовсюду...

0
ответ дан Boris Callens 27 November 2019 в 00:25
поделиться

Старайтесь избегать плавания. Синтаксический анализ, используйте TryParse вместо этого, поскольку это работает намного лучше, но делает то же задание. это также применяется к двойному, DateTime, и т.д.

(некоторые типы также предлагают TryParseExact, который также работает еще лучше!)

0
ответ дан Joachim Kerschbaumer 27 November 2019 в 00:25
поделиться

можно знать текущий Cuklture сервера с простым оператором:

System.Globalization.CultureInfo culture = System.Globalization.CultureInfo.CurrentCulture;

Примечание, что там идентификатор свойство CurrentUICulture, но UICulture используется из приложений мультиязыков формы ResourceMeanager. для форматирования чисел Вы должны considere CurrentCulture.

я надеюсь, что это поможет Вам

0
ответ дан Abdel Raoof 27 November 2019 в 00:25
поделиться

Так как Вы не знаете культуры интернет-пользователя, можно сделать некоторые догадки. TryParse с культурой, которая использует для разделителей и. для десятичного числа И TryParse с культурой, которая использует. для разделителей и, для десятичного числа. Если они оба следуют, но приводят к различным ответам тогда, необходимо будет спросить пользователя, которого они предназначили. Иначе можно обычно продолжать двигаться, учитывая два равных результата или один применимый результат или никакой применимый результат.

-1
ответ дан Windows programmer 27 November 2019 в 00:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: