-2

このコードが機能しないのはなぜですか?

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)
4

5 に答える 5

4

String.splitは、文字列を別の文字列で分割するのではなく、正規表現で分割します。は.、正規表現で特別な意味を持ちます (「任意の文字」を表します)。したがって、ドットを明示的に一致させたい場合は、ドットをエスケープする必要があります。"\\."代わりに使用してください。

于 2012-12-18T13:00:45.720 に答える
2

これを試して :

 String[] sa = s.split("\\.");
于 2012-12-18T12:58:17.057 に答える
2

使用する

String[] sa = s.split("\\.");

ドットは特別な正規表現文字であり、.エスケープしない限り何にでも一致します。

配列ArrayIndexOutOfBoundsExceptionの境界を超えたために発生します。

あなたが持っていた方法はsa.length0になるので、配列にアクセスすると例外が発生します。

于 2012-12-18T12:58:21.793 に答える
1

split は正規表現ベースです。ここで2番目の段落を参照してください

要するに。答えはエスケープです。

split("\\.")
于 2012-12-18T12:59:54.027 に答える
0

エスケープ"."- 特殊文字として扱われます。あなたはこれを読みたいと思うかもしれません。

String[] sa = s.split("\\.");
于 2012-12-18T12:59:11.720 に答える