gpt4 book ai didi

java - 尝试检查 ArrayList 范围外的项目时出错,但不确定替代方案

转载 作者:行者123 更新时间:2023-12-02 04:24:42 25 4
gpt4 key购买 nike

我正在为 MOOC 构建一个小程序,它将组合两个整数数组列表,但删除任何重复的数字。我相信我的逻辑是合理的 - 但似乎 JAVA 不具备按照我的想法解决问题的功能。逻辑是这样的:首先将所有项添加到arraylist中,然后将它们升序排序,然后从头到尾检查每次检查之前的项是否相同,如果相同则删除之前的项并继续检查。

问题是,我认为,它尝试检查 arraylist.get(-1) 并遇到错误(应该如此)&& 我无法从第 1 项开始检查,因为它不会让我将 x 预先定义为 1。如果是前者,任何人都可以指出我错在哪里,或者为我建议一个替代方案,如果是后者 - 如何将 x 预定义为 1 并仍然使用循环?这是我的代码:

public static void smartCombine(ArrayList<Integer> uno, ArrayList<Integer> due) {
int index = (uno.size() - 1);
uno.addAll(index, due);
Collections.sort(uno);
for (int x : uno) {
if (uno.get(x) == uno.get(x - 1)) {
uno.remove(x - 1);
}
}
}

错误如下:

Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859)
at java.util.ArrayList$Itr.next(ArrayList.java:831)
at SmartCombining.smartCombine(SmartCombining.java:11)
at SmartCombining.main(SmartCombining.java:28)
Java Result: 1

最佳答案

for 循环迭代,而不是索引

由于您想要比较两个值,因此可以使用普通的 for 循环。在您的情况下,由于您使用 x - 1,因此您必须在 1 处开始循环。

for (int x = 1; x < uno.size(); x++) {

关于java - 尝试检查 ArrayList 范围外的项目时出错,但不确定替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32343961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com