Как преобразовать 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"

1
Okem 11 Мар 2015 в 19:40

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

Справка

3
Community 23 Май 2017 в 12:12

Попробуй это -

String a = "9.000,00";
a = a.replace(",","");
a = a.replace(".","");
int b = Integer.parseInt(a);
1
Raj Srivastava 11 Мар 2015 в 16:59

Для этого вам нужно использовать 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

Надеюсь, это поможет.

2
adrCoder 11 Мар 2015 в 17:22

Если вы хотите получить в качестве результата 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
4
Pshemo 11 Мар 2015 в 17:16