【问题标题】:College Student need helps on homework in Java [closed]大学生需要帮助完成 Java 的家庭作业 [关闭]
【发布时间】:2020-07-08 18:57:56
【问题描述】:

您好,我正在尝试为一门课完成这项作业,它涉及读取文件并将重复项提取到数组列表中。我遇到的问题是比较数组列表中的元素。尝试比较我的元素时,我不断收到 IndexOutOfBounds 错误

for(int i=0;i<=counter;i++) {
            for(int j=i+1;j<=counter;j++) {
                if(uniqueWords.get(i) == uniqueWords.get(j)) {
                    dup.add(uniqueWords.get(i));
                }
            }

我的计数器和 uniqueWords 列表的大小均为 4,但我仍然收到 IndexOutOfBounds 错误。我在测试项目中测试了此代码,但在长度的布尔表达式中仅使用数字“4”运行代码并运行很好,但是当我使用我的计数器变量时,它似乎不起作用。任何反馈都将不胜感激。

【问题讨论】:

  • uniqueWords 的大小是多少?
  • uniqueWords.size()counter的值是多少?
  • 如果它们都是 4,您将收到带有 uniqueWords.get(4) 的 IndexOutOfBoundsException。索引从零开始。
  • 它们都是4的大小
  • @JohannesKuhn 我明白你的意思了,谢谢

标签: java arrays for-loop arraylist collections


【解决方案1】:

counter 是列表的大小,因此最大索引是counter + 1。在您的循环中,您不仅要从 0 迭代到 counter(包括),还要分配 j=i+1。应该是这样的:

for(int i = 0; i < counter - 1; i++) {
    for(int j = i + 1; j < counter; j++) {
        if(uniqueWords.get(i) == uniqueWords.get(j)) {
            dup.add(uniqueWords.get(i));
        }
    }
}

【讨论】:

  • 我很笨。谢谢!
猜你喜欢
  • 2011-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多