このコードが機能しないのはなぜですか?
String s = "0.1";
String[] sa = s.split(".");
System.out.println(sa[0] + "Hello " + sa[1]);
次のようなエラーが表示されます。
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at com.test.A.main(A.java:8)
このコードが機能しないのはなぜですか?
String s = "0.1";
String[] sa = s.split(".");
System.out.println(sa[0] + "Hello " + sa[1]);
次のようなエラーが表示されます。
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at com.test.A.main(A.java:8)
String.splitは、文字列を別の文字列で分割するのではなく、正規表現で分割します。は.
、正規表現で特別な意味を持ちます (「任意の文字」を表します)。したがって、ドットを明示的に一致させたい場合は、ドットをエスケープする必要があります。"\\."
代わりに使用してください。
これを試して :
String[] sa = s.split("\\.");
使用する
String[] sa = s.split("\\.");
ドットは特別な正規表現文字であり、.
エスケープしない限り何にでも一致します。
配列ArrayIndexOutOfBoundsException
の境界を超えたために発生します。
あなたが持っていた方法はsa.length
0になるので、配列にアクセスすると例外が発生します。
エスケープ"."
- 特殊文字として扱われます。あなたはこれを読みたいと思うかもしれません。
String[] sa = s.split("\\.");