Je reçois NumberFormatException
lorsque j'essaie d'analyser 265 858 avec Integer.parseInt()
.
Est-il possible de l’analyser en un entier?
Cette virgule est-elle un séparateur décimal ou s'agit-il de deux nombres? Dans le premier cas, vous devez fournir Locale
à NumberFormat
class qui utilise une virgule comme séparateur décimal:
NumberFormat.getNumberInstance(Locale.FRANCE).parse("265,858")
Cela se traduit par 265.858
. Mais en utilisant les paramètres régionaux américains, vous obtiendrez 265858
:
NumberFormat.getNumberInstance(Java.util.Locale.US).parse("265,858")
En effet, en France, ils traitent les virgules comme séparateur décimal, tandis qu'aux États-Unis, ils le séparent (en milliers).
Si ce sont deux nombres - String.split()
les et analyser séparément deux chaînes.
Vous pouvez supprimer le ,
avant de l’analyser dans un int:
int i = Integer.parseInt(myNumberString.replaceAll(",", ""));
S'il s'agit d'un numéro et que vous souhaitez supprimer des séparateurs, NumberFormat
vous renverra un nombre. Assurez-vous simplement d'utiliser les paramètres régionaux corrects lorsque vous utilisez la méthode getNumberInstance
.
Par exemple, certains paramètres régionaux remplacent la virgule et le point décimal par ceux auxquels vous êtes peut-être habitué.
Ensuite, utilisez simplement la méthode intValue
pour renvoyer un entier. Vous devrez toutefois encapsuler le tout dans un bloc try/catch pour prendre en compte les exceptions d'analyse.
try {
NumberFormat ukFormat = NumberFormat.getNumberInstance(Locale.UK);
ukFormat.parse("265,858").intValue();
} catch(ParseException e) {
//Handle exception
}
Une option serait de supprimer les virgules:
"265,858".replaceAll(",","");
Vous pouvez également utiliser NumberFormat.parse
, en le définissant comme un entier uniquement.
http://docs.Oracle.com/javase/1.4.2/docs/api/Java/text/NumberFormat.html#parse(Java.lang.String )
La première chose qui clique pour moi, en supposant que ce soit un nombre unique, est ...
String number = "265,858";
number.replaceAll(",","");
Integer num = Integer.parseInt(number);
Essaye ça:
String x = "265,858 ";
x = x.split(",")[0];
System.out.println(Integer.parseInt(x));
EDIT: Si vous voulez arrondir à l'entier le plus proche:
String x = "265,858 ";
x = x.replaceAll(",",".");
System.out.println(Math.round(Double.parseDouble(x)));