Integer.parseInt()
で265,858を解析しようとすると、NumberFormatException
が表示されます。
整数に解析する方法はありますか?
このコンマは小数点区切り文字ですか、それともこれら2つの数字ですか?最初のケースでは、コンマを小数点として使用する Locale
を NumberFormat
クラスに指定する必要があります。
_NumberFormat.getNumberInstance(Locale.FRANCE).parse("265,858")
_
これは_265.858
_になります。しかし、USロケールを使用すると、_265858
_が得られます。
_NumberFormat.getNumberInstance(Java.util.Locale.US).parse("265,858")
_
これは、フランスではカンマを小数点として扱い、米国ではグループ化(千)区切りとして扱うためです。
これらが2つの数値である場合-String.split()
それらであり、2つの別個の文字列を個別に解析します。
,
は、intに解析する前に削除できます。
int i = Integer.parseInt(myNumberString.replaceAll(",", ""));
数字が1つで、区切り文字を削除する場合、NumberFormat
は数字を返します。 getNumberInstance
メソッドを使用する場合は、必ず正しいロケールを使用してください。
たとえば、一部のロケールでは、コンマと小数点を使い慣れたものに交換します。
次に、intValue
メソッドを使用して整数を返します。ただし、Parse Exceptionsを考慮して、全体をtry/catchブロックでラップする必要があります。
try {
NumberFormat ukFormat = NumberFormat.getNumberInstance(Locale.UK);
ukFormat.parse("265,858").intValue();
} catch(ParseException e) {
//Handle exception
}
1つのオプションは、コンマを削除することです。
"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)));