0

を使用して CSV ファイルを読み取ろうとしていますBufferedReaderが、何らかの理由で 7 行の後に範囲外の例外が発生します。この正確なアルゴを別の CSV ファイル (30 行) で試してみたところ、うまくいきました。これが問題のCSVファイルです。

    String spellPath = "file path is here";

    FileReader y = new FileReader(spellPath);
    BufferedReader x = new BufferedReader(y);
    ArrayList<Card> ArrayList = new ArrayList<Card>( );   //dynamic data type

    for( String p = x.readLine(); p != null ; p = x.readLine()){

        String [] stArray = p.split(",");
        ArrayList.add(new Card( stArray[1], stArray[2])); //new card with name and desc only

    }

    System.out.println(ArrayList.toString());

ファイルの問題ですか、それともアルゴリズムの問​​題ですか?

4

6 に答える 6

3

ここでの問題は、 p=x.readLine()への2回の連続呼び出しです

for( String p = x.readLine(); p != null ; p = x.readLine()){
    ...
}

このため、2 行が読み取られ、1 行だけが null であるかどうかがチェックされます。

ループを次のように変更する必要があります

while (true) {
    String p= x.readLine();
    if (p == null) break;

    ...
}
于 2015-02-18T15:44:36.577 に答える
2

「自分フィールドの魔法カード1枚につき、ATKとDEFが500アップする」というセリフがある。を含まないもの,。したがってstArray[]、長さは 1 です。

その他: Java 配列はゼロベースです。

そしてfor( String p = x.readLine(); p != null ; p = x.readLine()){あるべき while ((String p = x.readLine())!= null ){

于 2015-02-18T14:13:29.997 に答える