数组中数据的插入(Java)

 代码实现

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();
        }
    }
}

Guess you like

Origin blog.csdn.net/weixin_54702911/article/details/121454054