代码实现
import java.lang.reflect.Array;
import java.util.Scanner;
public class ArrayInsert {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] array = {10, 12, 45, 60};
//接收插入值的索引
int index = -1;
//输出原数组
System.out.println("原数组array的数据->->->");
for(int i = 0;i < array.length; i++) {
if (i == 0) {
System.out.print("[" + array[i]+",");
} else if(i == array.length-1){
System.out.print(array[i]+"]");
}else{
System.out.print(array[i]+",");
}
}
System.out.println();
while (true) {
//在最后一个每次赋初值
//否则会承接上次的索引使下方语句不成立
//进一步使该数不会插入在最后一个位置
index = -1;
System.out.println("\n请输入需要插入的值,当输入0时结束输入:");
int integer = sc.nextInt();
if(integer == 0){
System.out.println("输入结束,欢迎下次光临!");
return;
}
//查询插入值的索引
for (int i = 0; i < array.length; i++) {
if (integer <= array[i]) {
index = i;
break;//找到位置就退出
}
}
//插入的值在最后面,则把数组的长度赋值给index
if (index == -1) {
index = array.length;
}
System.out.printf("%d插入在第%d位置上,索引为array[%d]->->->此时新数组的长度为:%d\n",
integer,index+1,index, array.length+1);
//创建新的数组用来接收插入值后的新数据
int[] newarray = new int[array.length + 1];//每次插入,承接上次的数组长度+1
//将值一一赋值给新数组
for (int i = 0, j = 0; i < newarray.length; i++) {
if (index != i) {
newarray[i] = array[j];
j++;//原数组长度每次比新数组长度少1,所以要分开赋值,否则会越界
} else {//插入值的索引与其对应,则把该值存入该数组索引中
newarray[i] = integer;
}
}
//旧数组指向新数组,释放旧数组的内存
array = newarray;
//输出插入后新数组中的值
System.out.println("新数组newarray的数据->->->");
for (int j = 0; j < newarray.length; j++) {
if(j == 0){
System.out.print("["+newarray[j]+",");
}else if(j == newarray.length-1){
System.out.print(newarray[j]+"]");
}else{
System.out.print(newarray[j]+",");
}
}
System.out.println();
}
}
}