8

ファイルからデータを読み込んでいます:

Some Name;1|IN03PLF;IN02SDI;IN03MAP;IN02SDA;IN01ARC
Some Other Name;2|IN01ALG;IN01ANZ
Another Name;3|
Test Testson;4|IN03MAP;IN01ARC;IN01ALG

次のように、そのファイルから読み取るすべての行に string.split() を使用します。

String args[]         = line.split("\\|");                  
String candidatArgs[] = args[0].split(";");

if (args[1] != "" || args[1] != null) { 

    String inscrieriString[] = args[1].split(";");

事は: 2 番目の部分 ( ) のAnother Name;3|後に到達すると、空になるか、または (よくわかりません)。.split("\\|")args[1]null""

ただし、 Array index out of bounds エラーが発生しますif (args[1] != "" || args[1] != null)(再度、 at: Another Name;3|)

4

6 に答える 6

11

args には要素が 1 つだけ含まれます。

if (args.length > 1) {
    文字列 inscrieriString[] = args[1].split(";");
}
于 2013-02-13T13:45:51.617 に答える
4

args配列の長さを確認する必要があります。

String.split()3行目の長さ1の配列を返すため、これargs[1]は範囲外です。String.isEmpty()の代わりにも使用する必要があります!= ""

ほとんどの場合、追加のチェックをスキップすることもできます - 配列の長さをチェックするだけで十分です:

if (args.length > 1) {
    String inscrieriString[] = args[1].split(";");
    ...
}
于 2013-02-13T13:45:34.340 に答える
1

argsの長さをテストでき、1または2を返す必要があると思います。1の場合、args[1]がないことがわかります。

于 2013-02-13T13:51:03.070 に答える
1

分割時にの長さを確認し、長argsさが許す場合 ( の場合args.length > 1) にのみ他のインデックスにアクセスします。

この場合:

String line = "Another Name;3|"; //simplified for the example
line.split("\\|");

次の配列が返されます。

{ "Another Name;3" }
于 2013-02-13T13:46:07.487 に答える
1

試す

String args[]         = line.split("\\|",2);                  
String candidatArgs[] = args[0].split(";");

if (args.length==2) 
    String inscrieriString[] = args[1].split(";");
于 2013-02-13T13:46:41.800 に答える
1

args[1]空または null ではありません。配列の範囲外です。

System.out.println("Another Name;3|".split("\\|").length);

配列を使用する前に、配列の長さを確認する必要があります。

于 2013-02-13T13:46:46.050 に答える