0

我创建了一个大小为 45 的数组列表。由于某种原因,我收到了 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>();
}

我可能会使用 aMap<Integer,List<String>>代替。您必须以类似的方式对其进行初始化,但这将是一种更可靠的机制。对于可以记录单词的最大字符数,您不会有任意限制。

于 2013-03-27T13:40:22.380 回答