1

str.split("!")文字列に感嘆符が含まれている場合、文字列を半分に引っ張るためにを使用しています。コードの設定方法では、感嘆符がない場合は 1 インデックス配列を取得し、感嘆符がある場合は 2 インデックス配列を取得します。

コード:

String file, macroName;

String[] fileAndMacro = string.split("!");
if(fileAndMacro[0] != null)
    file = new File(fileAndMacro[0]);
if(fileAndMacro[1] != null)
    macroName = fileAndMacro[1];

感嘆符を含む文字列を入力すると、機能します。たとえば、 and"test!string"を返します。fileAndMacro[0] = "test"fileAndMacro[1] = "string"

問題は、感嘆符がない場合です (私のコードからわかる人もいるでしょう)。私は単にArrayIndexOutOfBoundsException. したがって、明らかにヌルチェックはうまくいきません。値を格納するためのスペースが割り当てられていない場合、メモリに null 値が存在できないことを考えると、これは理にかなっています。

これについては理解していますが、その2番目のインデックスが存在するかどうかを確認する方法がわかりません。インデックスが存在するかどうかをリアルタイムで確認するにはどうすればよいですか?

4

4 に答える 4

10

配列の長さを確認する必要があるため、次のようにします。

if(fileAndMacro.length > 1)
   macroName = fileAndMacro[1];

存在しないインデックスにアクセスすると、作成された配列 (実際にはメソッドで作成された) に属さないメモリ内の他の領域にアクセスすることになるsplit()ため、例外が発生します。

于 2013-06-13T18:31:46.210 に答える
0

length プロパティを使用して配列の長さを確認できます array.length

if (array.length  < 2){
    //perform some operation you want

}
于 2013-06-13T18:34:40.097 に答える
0

ただテストしてfileAndMacro.lengthください。2 以上の場合、少なくとも 1 つの感嘆符がありました。

于 2013-06-13T18:31:52.363 に答える