我试图通过以下代码从此数组中删除重复的元素,它给了我这个错误:

线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:在pro2.Main.main(Main.java:36)处长度13的索引13超出范围

编码 :

public static void main(String[] args) {
    int[] x = { 2, 2, 3, 5, 6, 3, 5, 6, 7, 8, 9, 1, 7 };

    Integer[] o = new Integer[x.length];

    for (int i = 0; i < x.length; i++) { 
        o[i] = Integer.valueOf(x[i]);
    }

    for (int i = 0; i < x.length; i++) {
        for (int j = i + 1; i < x.length; j++) {
            if (o[i] == o[j]) {
                o[j] = null;
             }  
        }
    }

    for (int i = 0; i < x.length; i++) {    
         if(o[i]!=null)
          System.out.print(o[i]);   
    }
}

#1楼 票数:5 已采纳

您在这里有错字:

        for(int j = i+1 ; i<x.length ; j++) {
                          ^ this should be j

当前的(错误的)循环直到运行到数组末尾时才停止。 结果,您试图获取x [12 + 1]的值,即x [13],超出数组范围。

  ask by Esraa Salama translate from so

未解决问题?本站智能推荐:

2回复

为什么下面的代码除非数组为Integer[]而不是int[]否则将无法工作

有人可以告诉我为什么下面的代码除非数组是Integer[]而不是int[]否则将不起作用
3回复

以排序方式在数组中插入整数的函数

所以假设我从一个数组 [0,0,0,0] 开始。 在这个数组中,我将正好添加 4 个值。 让我们说 2,1,3,4。 所以我的主要功能将如下所示: 我尝试了一个我也在网上找到的方法insertSortedInArr()的实现,但它不太有效。 我试图找出它出了什么问题,但我无法找到错误。 这是方法:
2回复

在Java中对部分排序的原始整数数组进行排序

有问题的数组可以包含等于或大于零的任何整数,并且数字是唯一的。 数字必须按升序排列。 数组的大小通常小于100。大多数数组已经排序。 多数情况下,我平均指的是至少90%。 我发现了TimSort的此实现,但它不适用于原始值。 自动装箱会导致很多开销。 性能是最关键的,因为将多次
3回复

如何水平打印整数数组?

该代码块应该按升序对数字进行排序,但它是垂直输出的,我如何水平输出呢? 示例输出:
2回复

对数组的整数进行排序

我正在尝试对数组的整数进行排序,但我一直在尝试错误。 我试过sort(数组); 的Array.Sort(); Arrays.sort(数组); 和Arrays.sort(); 但没有任何作用。 帮助将不胜感激。 我得到的这个Arrays.sort(数组)的错误是找不到符号,符号变量
12回复

Java:不使用Arrays.sort()对整数数组进行排序

这是我们Java类中的一个练习中的指令。 在其他任何事情之前,我想说我'做我的功课'而且我不只是懒得让Stack Overflow上的某个人为我回答这个问题。 这个特定项目是我所有其他练习中的问题,因为我一直在努力为此找到“完美的算法”。 编写JAVA程序,输入10个整数值,并按升序或
1回复

C-从数组中删除重复项并将这些重复项存储在另一个数组中

我有一个名为allnumbersarray的数组,我需要删除该数组的重复项并将它们存储在另一个称为uniqueprimes的数组中。 allnumbersarray由质数组成。 当我尝试使用if-else if语句时,输出变得混乱,许多元素变为0,并且不再排序。 这是我尝试过的方法,不确定
4回复

如何根据元素中的整数值对元素排序?

我需要根据它包含的整数值对数组元素进行排序。 电流输出为: 但实际上我需要这样: