java - 从 ArrayList 中删除对象后出现 ArrayList IndexOutOBoundsException

标签 java list arraylist

我试图在给定的输入句子中找到单词的字谜。这是我运行程序时遇到的异常。是否是由于列表大小的变化所致?请帮助我摆脱这个问题。

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 66, Size: 66
    at java.util.ArrayList.rangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at MyClass.main(MyClass.java:28)

这是我的源代码

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class MyClass {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String wordin = sc.nextLine().toLowerCase();
        sc.close();
        List<String> word = new ArrayList<String>(Arrays.asList(wordin.split("\\s+"))); // splits the whole string into array of words
        ArrayList<String> sorted = new ArrayList<String>();
        int i,j;
        for (i = 0; i < word.size(); i++) { // loop to sort letters of a particular word
            word.set(i, word.get(i).replaceAll("[^\\w]", ""));
            char[] ar = word.get(i).toCharArray();
            Arrays.sort(ar);
            sorted.add(String.valueOf(ar)); // add the sorted word to list
        }

        for(i=0;i<sorted.size();i++){
            for(j=i;j<sorted.size();j++){
                char[] ar = word.get(j).toCharArray();
                Arrays.sort(ar);
                String current = String.valueOf(ar);
                if(current.equals(sorted.get(i))){
                    System.out.println(word.get(j));
                                    word.remove(j);
                }   

            }


        }

    }

}

最佳答案

您的问题是您迭代排序的集合并从单词列表中删除。

for(j=i;j<sorted.size();j++){
   ... 
   word.remove(j); // and now word is shorter than sorted
}

您可能需要 j<word.size()

关于java - 从 ArrayList 中删除对象后出现 ArrayList IndexOutOBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17996560/

相关文章:

java - 如何在异步函数之后触发 Activity 更改

java - JTable、JComboBox - 在第二列中显示 JComboBox 时出现问题

java - Map<String, List> 或 List<List> 的 Hibernate 注释

list - Prolog:使用递归在多个列表上成对兼容

python - 将元组列表转换为 numpy 数组并 reshape 它?

java - 尝试在 ListView 中显示从 CSV 文件读取的数据

java - 使用 ArrayList 创建矩阵

java - jar 未加载。请参阅 Servlet 规范 2.3,第 9.7.2 节。违规类 : javax/servlet/Servlet. 类

list - 如何在 Haskell 列表中移动元素?

java - 我有一套配料。我需要在 Java 中检索包含这些成分的所有食谱