/**
* 添加指定的元素,到指定的位置,后面的元素整体后移一位
*/
public class Demo2 {
public static void main(String[] args) {
//定义一个数组,最后一个用0占住位置,添加一个元素,要整体后移一位,要提前空出位置
int[] array = {1,2,3,4,5,6,7,8,9,0};
boolean add = add(array,3,66);
System.out.println(add);
System.out.println(Arrays.toString(array));
}
/*
* 方法的功能:添加指定的元素,到指定的位置,后面的元素整体后移一位
*
* 方法名字:add
* 方法的返回值 boolean
* 方法的参数
* 第一个 int[] 数组
* 第二个 int类型数据(在那个下标添加)
* 第三个 int类型的数据(添加的那个数)
* */
public static boolean add(int[] arr,int index,int num){
//首先对参数进行合法性的判断,增加健壮性
if (arr.length == 0 || index < 0 || index > arr.length - 1){
System.out.println("参数输入错误");
return false;
}
//要添加一个元素,要从最后向后移动,一直移动到选中下标的那个位置
for (int i = arr.length - 1; i > index; i--) {
arr[i] = arr[i - 1];//倒数第二个元素的值移动到倒数第一元素的位置将其覆盖
}
//指定下标赋值
arr[index] = num;
return true;
}
}
第二种方法利用了数组扩容(System.arraycopy()方法)
/**
* 7.添加指定的元素,到指定的位置,后面的元素整体后移一位
* * (数组扩容的方式)封装方法
*/
public class Demo8 {
public static void main(String[] args) {
int[] array = {1,2,3,4,5,6,7,8,9};
add(array,6,66666);
}
/**需求 指定下标添加元素,其他 元素整体后移,(
* 数组后移,扩容问题,System.arraycopy(原数组,开始复制起始,扩容数组,开始复制起始,复制长度))
* 方法分析
* 方法名:add
* 返回值:void
* 参数列表:int[] arr,int appoint,int appointNum
*/
public static void add(int[] arr,int appoint,int appointNum){
//创建一个数组用来扩容
int[] arrr = new int[arr.length + 1];
//扩容的方法 System.arraycopy(原数组,开始复制起始,扩容数组,开始复制起始,复制长度)
System.arraycopy(arr,0,arrr,0,arr.length);
arr = arrr;
for (int i = arr.length - 2; i >= appoint; i--) {
arr[i + 1] = arr[i];
}
arr[appoint] = appointNum;
System.out.println(Arrays.toString(arr));
}
}
)