当前位置: 首页 > 知识库问答 >
问题:

致力于将随机生成的数组分离为重复数组和重复数组的程序已删除,收到IndexOutOfBound错误

尉迟栋
2023-03-14

你好,斯塔克弗勒社区,

我正在开发一个程序,用包含1-25的整数填充Arraylist,复制Arraylist,并将其拆分为重复的整数和不重复的数组。我的问题在嵌套for循环中。我正在尝试比较索引,以便在无重复数组中只填充多个潜在重复中的一个。

以下是我的节目:

public static void main(String[] args) {
    ArrayList <Integer> OgArr = new ArrayList <Integer>();
    
    Random random = new Random();
    
    int n = 35;
    int c = 0;
    
    for (int i = 0; i < n; i++)
    {
        Integer r = 1 + random.nextInt(25);
        OgArr.add(r);
    }
    
    ArrayList<Integer> copyOfArr = (ArrayList<Integer>) OgArr.clone();

    int leng = OgArr.size();
    
  for (int i = 0; i < leng - 1; i++) {
        int imin = i;
        for (int j = i + 1; j < leng; j++) {
            if (copyOfArr.get(j) < copyOfArr.get(imin)) {
                imin = j;
            }
        }
        Collections.swap(copyOfArr,i,imin);      
  }
  
  ArrayList<Integer> duplicatesOnly = new ArrayList<Integer>();
  System.out.print(copyOfArr.size());
  ArrayList<Integer> removedDuplicates = new ArrayList<Integer>();
  
  
  for(int k = 0; k < copyOfArr.size(); k++){
      if(copyOfArr.get(k) != duplicatesOnly.get(k)){ // error begins here
          duplicatesOnly.add(copyOfArr.get(k));
      }
      else{
          continue;
      }
  }  
  System.out.println(duplicatesOnly); // checking to see if it works
  System.out.println(copyOfArr);
} 

如果您能帮助填充duplicatesOnly和duplicatesRemoved数组,我们将不胜感激。

共有1个答案

闾丘才哲
2023-03-14

好吧,您声明一个新的ArrayList,然后尝试调用get()。显然,如果新数组列表中没有元素,它会抛出错误,因为没有什么可获取的。

  ArrayList<Integer> duplicatesOnly = new ArrayList<Integer>();

  // ...
      
  if(copyOfArr.get(k) != duplicatesOnly.get(k)){ // error begins here
                                        ^^^
   Obviously this won't work -----------+++
  

    
 类似资料:
  • 我似乎找不到解决这个问题的方法,你如何从基于数组的值的数组中删除项?就像你移除一个一样? 我需要删除一些s: 这将返回一个数组,但感觉有些不对劲。若要删除一个项目,那个就可以了,但通过ID数组从数组中删除项目,我不知道从哪里开始。 在循环中,我试图使用,但un定义在数组中:: 到目前为止,React表示在循环期间无法更新状态。基于,如何使一个项目处于状态?

  • 问题内容: 如何删除二维数组的重复行? 答案应该如下: 如果有两行相同,那么我想删除一个“重复”行。 问题答案: 您可以使用。由于您需要唯一的行,因此我们需要将它们放入元组: _只是应用到_阵列会导致这样的: 打印出列表中的唯一元素 。因此,将它们放入元组会导致: 打印: 更新 在新版本中,您需要设置

  • 我试图创建一个没有重复的随机数组。 任务是从用户那里获取一个整数数组和最大值,用0到最大值之间的随机数填充数组,并显示没有重复的随机数组,不使用任何其他类,除了随机和扫描仪。 这是一个示例输出: 请输入数组的大小:10 请输入最大值:50 [39,2,17,49,12,19,40,31,42,15] 我需要帮助删除重复的内容。我不确定我所做的是否正确,我是一个初学者,但这是我目前所做的。非常感谢帮

  • 问题内容: 我有一个包含我的对象的数组。每个人都有财产。 有没有比我的数组中找到重复的帖子ID的更有效方法? 问题答案: 我将建议2解决方案。 两种方法都必须是平等的 使帖子符合可哈希和平等 在这里,我假设您的struct(或类)具有type 的属性。 解决方案1(丢失原始订单) 要删除重复的内容,您可以使用 解决方案2(保留订单)

  • 问题内容: 不知道这个问题是否需要删除,但是我无法在其他地方找到答案,所以我可以去询问。 我有一个二维数组,如下所示: 我想删除那些重复的电子邮件。因此,在上述示例中,我只想删除[] [0]或[] [2]。我不担心要检查名称或类似的东西,我只需要基于单个值对子数组进行重复数据删除。 此刻我有这样的事情 但这是不对的。任何帮助表示赞赏。 问题答案: 一种使用数组索引唯一性的快速解决方案: 注意1:从