Как преобразовать String с точкой и запятой в int, например
String a "9.000,00"
int b = Integer.parseInt(a);
Когда я запускаю этот код, я получаю сообщение об ошибке: Exception in thread "main" java.lang.NumberFormatException: For input string: "9.000,00"
5 ответов
final String a = "9.000,00";
final NumberFormat format = NumberFormat.getInstance(Locale.GERMAN); // Use German locale for number formats
final Number number = format.parse(a); // Parse the number
int i = number.intValue(); // Get the integer value
Я думаю, DecimalFormat.parse - это способ использования API Java 7:
String a = "9.000,00";
DecimalFormat foo = new DecimalFormat();
Number bar = foo.parse(a, new ParsePosition(0));
После этого вы идете и довольны Number a> ты только что получил.
Если вы хотите, чтобы ответ был 900000 (для меня это не имеет смысла, но я отвечаю на ваш вопрос) и поместите его в int , выполните:
int b = Integer.parseInt(a.replaceAll(",","").replaceAll("\\.",""));
Как уже отмечалось в комментариях.
Попробуй это -
String a = "9.000,00";
a = a.replace(",","");
a = a.replace(".","");
int b = Integer.parseInt(a);
Для этого вам нужно использовать java.text.NumberFormat
и NumberFormat.getInstance(Locale.FRANCE)
(или другой совместимый Locale
)
import java.text.NumberFormat;
import java.util.Locale;
class Test {
public static void main(String[] args) throws Exception {
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
String a = "9.000,00";
a = a.replaceAll("\\.", "");
Number number = format.parse(a);
double d = number.doubleValue();
int c = (int) Math.floor(d);
System.out.println(c);
}
}
Печатает 9000
, как вы хотите (а теперь это int
)!
Если я напечатаю каждый промежуточный шаг:
import java.text.NumberFormat;
import java.util.*;
class test {
public static void main(String[] args) throws Exception {
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
String a = "9.000,00";
a = a.replaceAll("\\.", "");
System.out.println(a); // prints 9000,00
Number number = format.parse(a);
System.out.println(number); // prints 9000
double d = number.doubleValue();
System.out.println(d); // prints 9000.0
int c = (int) Math.floor(d);
System.out.println(c); // prints 9000
}
}
Так что, если вы хотите, чтобы Okem 9000,00
, как вы говорите в своем комментарии, вам просто нужно
a = a.replaceAll("\\.", "");
System.out.println(a);
Что дает вам результат 9000,00
Надеюсь, это поможет.
Если вы хотите получить в качестве результата 900000
, просто удалите все ,
и .
и проанализируйте его, например, с помощью Integer.parseInt
или Long.parseLong
или, может быть, даже лучше используйте BigInteger
, если число может быть большим.
String a = "9.000,00";
BigInteger bn = new BigInteger(a.replaceAll("[.,]", ""));
System.out.println(bn);
Вывод: 900000
Но если вы хотите преобразовать 9.000,00
в 9000
(где часть ,00
- десятичная дробь), вы можете использовать NumberFormat
с Locale.GERMANY
, который использует форму, аналогичную вашей ввод: 123.456,78
String a = "9.000,00";
NumberFormat format = NumberFormat.getInstance(Locale.GERMANY);
Number number = format.parse(a);
double value = number.doubleValue();
//or if you want int
int intValue = number.intValue();
System.out.println(value);
System.out.println(intValue);
Выход:
9000.0
9000
Похожие вопросы
Связанные вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.