0

サイズが 45 の arraylists の配列を作成しました。何らかの理由で ArrayOutOfBoundException が発生しています。

エラーが発生する場所は次のとおりです。

    String temp;
    Scanner sc = new Scanner(str1);
    while(sc.hasNext())
    {
        temp = sc.next();
        int len = temp.length();
        if(len > 0)
            wordsByLen[len - 1].add(temp);  //throwing the error here with exception of 59
    }

よろしくお願いします。

4

1 に答える 1

0

アレイwordsByLenを正しく初期化しましたか? ないと思います。

あなたがする必要があるのは、正しい長さで配列を初期化し、次に可能なすべての単語の長さのコレクションを使用することだと思います。例 (疑似コード)

for (int i = 0; i < MAXWORDLENGTH; i++) {
   wordsByLen[i] = new ArrayList<String>();
}

代わりにa を使うかもしれませんMap<Integer,List<String>>。同様の方法で初期化する必要がありますが、より信頼性の高いメカニズムになります。単語を記録できる最大文字数に恣意的な制限はありません。

于 2013-03-27T13:40:22.380 に答える