我有一个字符串:“100 0 2 3.0 100 420 5.0 280 420”
在代码中我做了:
Scanner s = new Scanner(walls).useDelimiter(" ");
while (s.hasNext()) {
int type = s.nextInt();
int rotation = s.nextInt();
int actionsCount = s.nextInt();
float s1 = s.nextFloat(); --> crash on Sony
}
在Smsung Galaxy SII(2.3.6)和Motorolla Xoom(4.1.2)上一切正常。为什么在索尼XPERIA Acrto s wirh Android 4.0.4上会出现这个错误?
03-01 11:05:42.436: E/AndroidRuntime(21019): java.util.InputMismatchException
03-01 11:05:42.436: E/AndroidRuntime(21019): at java.util.Scanner.next(Scanner.java:1012)
03-01 11:05:42.436: E/AndroidRuntime(21019): at java.util.Scanner.nextFloat(Scanner.java:1297)
答案 0 :(得分:0)
问题出在Locale中。在索尼是Locale.RU,其中真实数字用逗号写,如下所示: “100 0 2 3,0 100 420 5,0 280 420”
因此修复使用美国语言环境。
Scanner s = new Scanner(walls).useDelimiter(" ");
s.useLocale(Locale.US); --> need add this string
while (s.hasNext()) {
int type = s.nextInt();
int rotation = s.nextInt();
int actionsCount = s.nextInt();
float s1 = s.nextFloat(); --> And NO crash on Sony
}