/*
存在一个数组,数组中的元素为
int[] array = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
要求:
1. 0是无效元素,仅占位使用
需求:
在当前数组中删除指定下标的元素
例如:
指定下标5
结果 {1, 3, 5, 7, 9, 13, 15, 17, 19, 0}
0占位!!!
*/
分析:
实现代码
package com.qfedu.a_array;
import java.util.Arrays;
public class Demo5 {
public static void main(String[] args) {
int[] array = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
remove(array, 9);
System.out.println(Arrays.toString(array));
}
/*
1.5 删除数组中的指定下标的元素【难点】
存在一个数组,数组中的元素为
int[] array = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
要求:
1. 0是无效元素,仅占位使用
需求:
在当前数组中删除指定下标的元素
例如:
指定下标5
结果 {1, 3, 5, 7, 9, 13, 15, 17, 19, 0}
0占位!!!
推理过程:
从删除位置开始,之后的元素整体向前移动,
并且需要在数组原本最后一个位置上存放元素0,0
是无效元素,占位使用
arr[3] = arr[4];
arr[4] = arr[5];
arr[5] = arr[6];
arr[6] = arr[7];
arr[7] = arr[8];
arr[8] = arr[9];
arr[i] = arr[i + 1];
arr[i - 1] = arr[i];
arr[9] = 0;
方法分析:
public static 不要问
返回值类型:
boolean
方法名:
remove
形式参数列表:
1. 删除数据的数组
2. 指定删除数据的下标位置
方法声明:
public static boolean remove(int[] arr, int index)
*/
/**
* 删除数组中指定下标元素的内容
*
* @param arr 源数据数组,int类类型
* @param index 指定删除的下标位置
* @return 删除操作成功返回true,失败返回false
*/
public static boolean remove(int[] arr, int index) {
// 参数合法性判断
// index < 0 || index >= arr.length
if (index < 0 || index > arr.length - 1) {
System.out.println("Input Parameter is Invalid");
return false;
}
/*
arr[3] = arr[4];
arr[4] = arr[5];
arr[5] = arr[6];
arr[6] = arr[7];
arr[7] = arr[8];
arr[8] = arr[9];
arr[i] = arr[i + 1];
从删除位置开始,到数组的最后一个有效元素位置结束
*/
for (int i = index; i < arr.length - 1; i++) {
arr[i] = arr[i + 1];
}
// 最后一位数据赋值为0,占位,同时告知用户这是一个无效数据
arr[arr.length - 1] = 0;
return true;
}
}