Я получаю NumberFormatException
, когда пытаюсь разобрать 265 858 с помощью Integer.parseInt()
.
Есть ли способ разобрать его в целое число?
Я получаю NumberFormatException
, когда пытаюсь разобрать 265 858 с помощью Integer.parseInt()
.
Есть ли способ разобрать его в целое число?
Является ли эта запятая десятичным разделителем или эти два числа? В первом случае вы должны предоставить Locale
в NumberFormat
, который использует запятую как десятичный разделитель:
NumberFormat.getNumberInstance(Locale.FRANCE).parse("265,858")
В результате получается 265.858
. Но используя US locale, вы получите 265858
:
NumberFormat.getNumberInstance(java.util.Locale.US).parse("265,858")
Это потому, что во Франции они обрабатывают запятую как десятичный разделитель, а в США - как разделитель (тыс.).
Если это два числа - String.split()
их и разобрать две отдельные строки независимо.
Вы можете удалить ,
, прежде чем разбирать его в int:
int i = Integer.parseInt(myNumberString.replaceAll(",", ""));
Если это один номер и вы хотите удалить разделители, NumberFormat
вернет вам номер. Просто убедитесь, что используете правильный язык, используя метод getNumberInstance
.
Например, некоторые Locales заменяют запятую и десятичную точку на то, к чему вы можете привыкнуть.
Затем просто используйте метод intValue
, чтобы вернуть целое число. Вам придется обернуть все это в блок try/catch, хотя для учета исключений Parse.
try {
NumberFormat ukFormat = NumberFormat.getNumberInstance(Locale.UK);
ukFormat.parse("265,858").intValue();
} catch(ParseException e) {
//Handle exception
}
Одним из вариантов было бы разделение запятых:
"265,858".replaceAll(",","");
Первое, что нажимает на меня, считая, что это единственный номер,...
String number = "265,858";
number.replaceAll(",","");
Integer num = Integer.parseInt(number);
Или вы можете использовать NumberFormat.parse
, установив его как целое число.
http://docs.oracle.com/javase/1.4.2/docs/api/java/text/NumberFormat.html#parse(java.lang.String)
Попробуйте следующее:
String x = "265,858 ";
x = x.split(",")[0];
System.out.println(Integer.parseInt(x));
ИЗМЕНИТЬ: если вы хотите округлить его до ближайшего целого:
String x = "265,858 ";
x = x.replaceAll(",",".");
System.out.println(Math.round(Double.parseDouble(x)));