【问题标题】:Removing random element from array and adding it to another array: OutOfIndex bound error从数组中删除随机元素并将其添加到另一个数组:OutOfIndex 绑定错误
【发布时间】:2020-07-30 06:08:48
【问题描述】:

这段代码有什么问题? 我正在尝试从 ArrayList 中选择一个随机元素并将其移动到另一个 ArrayList 以创建排列。它不断给我超出范围的错误。

int size = 10;
for (int i = 0; i < 10; i++) {
    int r = (int) (Math.random() * (size));
        
    random.remove(r);
    permutations.add(random.get(r));
    size--;
        
}

【问题讨论】:

  • 如果您检查您的堆栈跟踪(控制台中的错误消息),您将看到错误出现在哪一行,请在询问时将此信息放在您的问题中

标签: java arraylist indexoutofboundsexception


【解决方案1】:

问题是指令的顺序首先是您从位置 r 移除,然后您尝试从位置 r 获取。

    permutations.add(random.get(r));       
    random.remove(r);

此外,如果您想从集合中删除为 arrayList,我建议您使用迭代器。迭代器有方法作为 next() 用于获取数组中的下一个元素和 remove() 用于删除您可以检查的实际元素https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html

【讨论】:

  • 因为如果你有随机并且你从位置 r 移除,那么你在随机位置 r 什么都没有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-20
相关资源
最近更新 更多