这道题也算是面试中经常遇到的问题,在这里通过代码演示:
package com.njaccp.my8_24;
import java.util.Scanner;
/**
* MyArray
*
* @author Mr.m
* @version 1.0
* @description 数组添加一个元素, 不改变数组的顺序
* @date 2022/8/24 14:22
*/
public class MyArray {
public static void main(String[] args) {
int [] a = {1,2,3,4,5,6,7,8,9,10};
// 新建数组
int [] b = new int[a.length+1];
// 将原来的数据复制到新的数组
System.arraycopy(a,0,b,0,a.length);
// 将数组打印
for (int i = 0; i < b.length; i++) {
System.out.print(b[i]+" ");
}
System.out.println();
// 通过键盘录入插入的数据
Scanner scanner = new Scanner(System.in);
System.out.print("请输入您要插入的数据:");
int five = scanner.nextInt();
// 定义一个变量,用来记录插入位置
System.out.print("请输入您要插入的位置:");
int index = scanner.nextInt();
// 找到新元素的插入位置
for (int i = 0; i < b.length; i++) {
if(i==index){
index = i;
break;
}
}
// 定义一个变量,用来记录需要移动的数据个数
int movNumber = b.length-1 - index;
// 从插入位置开始之后的元素,都需要向后移动一位
System.arraycopy(b,index,b,index+1,movNumber);
b[index] = five;
for (int i = 0; i < b.length; i++) {
System.out.print(b[i]+" ");
}
}
}