帮忙寻找代码错误:java去除数组中指定元素

新手上路,请多包涵

// 去除数组中的指定元素dislodge:移走/appoint:指定/element:元素;

public int[] dislodgeAppointArray(int[] arr,int ele) {
    int count = 0;
    for(int i = 0;i < arr.length;i++) {
        if(ele!=arr[i]) {
            count++;
        }
    }
    int[] dislodgeArray = new int[count];
    int index = 0;
    for(int i = 0;i < count;i++) {
        if(ele!=arr[i]) {
            dislodgeArray[index] = arr[i];
            index++;
        }
    }
    return dislodgeArray;
}
阅读 2.2k
4 个回答
新手上路,请多包涵

每次测试查看去除后数组元素后两位都是默认“0”,怎么回事望大佬帮助,谢谢!

因为你的第二次循环的目标错了,第二次循环依然需要遍历 arr,循环次数必须是 arr.length 次。

count 表示的是目标数组中不重复元素的个数,应该是不大于目标数组的长度。
第二次循环的时候,应该是循环整个目标数组。

其实数组去除指定元素,可以参考list方法。

public static int[] dislodgeAppointArray(int[] arr, int ele) {
    int index = -1;//保存要去除元素在数组中的索引
    //遍历数组找到索引,跳出循环
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] == ele) {
            index = i;
            break;
        }
    }
    //定义一个新数组作为去除元素后的数组
    int[] newArr = new int[arr.length - 1];
    //遍历新数组,跳过要去除的元素对新数组进行赋值,
    for (int i = 0; i < newArr.length; i++) {
        //即要去除的元素索引之前的数值不变,直接对位赋值
        if (i < index) {
            newArr[i] = arr[i];
        } else {//从要去除的元素索引位置开始,往后跳一位进行错位赋值
            newArr[i] = arr[i + 1];
        }
    }
    return newArr;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题