0

私は文字列を持っています: "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)では、すべて正常に動作します。Sony XPERIAAcrtoのAndroid4.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)
4

1 に答える 1

0

問題はロケールにありました。Sonyには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
    }
于 2013-03-01T09:44:45.190 に答える