I am trying to load info from a properties file and i have the following code:
anInt = Integer.parseInt(prop.getProperty("anInt"));
aDouble = Double.parseDouble(prop.getProperty("aDouble"));
and while the first line works just fine, the second one where i am trying
to load a double variable throws a NumberFormatException
. The specific exception message is:
Exception in thread "main" java.lang.NumberFormatException: For input string: "78,5"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222)
at java.lang.Double.parseDouble(Double.java:510)
at Assignment1.BaseStation.readPropertyFile(BaseStation.java:59)
at Assignment1.BaseStation.main(BaseStation.java:83)
You have to use a period as a delimiter, not comma if you want to parse using Double.parseDouble()
. It says in documentation for the Double class that
FloatingPointLiteral ... [is] as defined in the lexical structure sections of the of the Java Language Specification.
From Java Language Specification:
FloatingPointLiteral:
- Digits . Digits opt ExponentPart opt FloatTypeSuffix opt
- . Digits ExponentPart opt FloatTypeSuffix opt
- Digits ExponentPart FloatTypeSuffix opt
- Digits ExponentPart opt FloatTypeSuffix
If you want to take locale into consideration, you can use java.text.NumberFormat
:
NumberFormat nf = NumberFormat.getInstance();
double number = nf.parse(myString).doubleValue();