Java 由以逗号代替点作为小数分隔符的浮点引起的NumberFormatException

Java 由以逗号代替点作为小数分隔符的浮点引起的NumberFormatException,java,android,floating-point,numberformatexception,Java,Android,Floating Point,Numberformatexception,我目前正在和一大群测试人员一起测试我的应用程序,有些设备出现了其他设备没有的奇怪问题 出于某种原因,其中一个问题是NumberFormatException,当我将一些字符串转换为Float(它们都来自ArrayList)时,它会发生。在我的设备中,没有任何事情发生,所有字符串都可以毫无问题地转换。但是,在另一个人的设备上,我们得到以下日志的异常: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fuz

我目前正在和一大群测试人员一起测试我的应用程序,有些设备出现了其他设备没有的奇怪问题

出于某种原因,其中一个问题是NumberFormatException,当我将一些字符串转换为Float(它们都来自ArrayList)时,它会发生。在我的设备中,没有任何事情发生,所有字符串都可以毫无问题地转换。但是,在另一个人的设备上,我们得到以下日志的异常:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fuzzfit/activities.ReportListViewActivity}:         

java.lang.NumberFormatException: Invalid float: "0,05"
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NumberFormatException: Invalid float: "0,05"
at java.lang.StringToReal.invalidReal(StringToReal.java:63)
at java.lang.StringToReal.parseFloat(StringToReal.java:310)
at java.lang.Float.parseFloat(Float.java:300)
at activities.ReportListViewActivity.getBiggestItem(ReportListViewActivity.java:141)
at activities.ReportListViewActivity.onCreate(ReportListViewActivity.java:130)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
... 11 more
我知道异常发生在“0,05”字符串上,但我不知道它最初是如何变成的,因为在转换为字符串之前,第一个ArrayList中的所有内容在某个点上都是一个浮点。似乎在他的手机上,由于某种原因,浮点数中的点变成了逗号,每当我试图将其转换回浮点数时,就会产生NumberFormatException。我能做些什么来解决这个问题?(请注意,这只发生在某些设备上!)


谢谢

这似乎与在不同的语言环境(如德国)中运行有关,其中十进制分隔符字符为“,”

如果您确实在解析用户输入,则需要使用逗号来解析数据。

某些设备”部分可能是因为其他国家使用逗号作为十进制分隔符,而这些设备可能默认为逗号分隔符。快速正则表达式应该可以解决这个问题。