0

csv ファイルを解析しようとしています。典型的な行は次のようになります。

7,118.2722833,98.61084463,94.36895546,,

私が抱えている問題は、行を分割すると、配列の長さが 4 しか得られないことです。配列の 5 番目と 6 番目の要素が null を返すようにしたいのですが、インデックスを取得しています境界エラー。

コードの縮小版を次に示します。

BufferedReader br = new BufferedReader(new FileReader("FileName"));
String line = "";
String[] datum = new String[6];

while ((line = br.readLine()) != null) {
    datum = line.split(",");

    if (datum[5] != "") {
        //some statements
    }
}

最後の 2 つのコンマを無視する理由がわかりましたか?

4

3 に答える 3

4

split引数のないメソッドは、末尾nullの要素を破棄します。に負limitを渡すsplitと、末尾nullの要素がそのままの配列が返されます。

datum = line.split(",", -1);

また、!=空の文字列かどうかを確認するために使用しないでください。使用する

if (!("".equals(datum[5]))) {
于 2013-07-15T18:21:56.847 に答える
1

配列インデックスは0から始まります。5番目の要素が必要な場合は、datum[4]代わりに行う必要がありますdatum[5]

7 --------------0
118.2722833-----1
98.61084463-----2
94.36895546-----3,
 ----------------4
于 2013-07-15T18:21:49.660 に答える