问下大家这串代码究竟是因为什么报错啊,该怎么修改啊


import java.util.Scanner;

//已知有个升序的数组,要求插入一个元素,该数组顺序依然是升序,比如:[10124590],添加23后,数组为[1012234590]


public class HomeWork{
    

    //编写main函数
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        System.out.println("输入数组长度:");
        int len = sc.nextInt();
        int[] arr = new int[len];
        int temp = 0;
        
        //输入数组
        for (int i = 0;i < arr.length ; i++) {
            
            System.out.print("请输入第" + (i + 1) + "个元素:");
            arr[i] = sc.nextInt();
            System.out.println();

        }

        //进行排序
        for(int i = 0;i < arr.length - 1; i++){

            for (int j = 0;j < arr.length - 1 - i ; j++ ) {
                
                //如果前者大于后者,则交换位置
                if(arr[j] > arr[j + 1]){

                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;

                }

            }

        }


        //输出数组

        System.out.println("原数组为:");
        for (int i = 0;i < arr.length; i++ ) {
            
            System.out.println("第" + (i + 1) + "个数组元素为:" + arr[i]);
            System.out.println();
        }

        
        

        //插入元素
        System.out.println("输入待插入元素个数:");
        int count = sc.nextInt();
        int[] arr1 = new int[arr.length + count];
        
        

        for (int i = 1;i <= count; i++ ) {
            
            int index = -1;
            System.out.println("输入第" + i +"个元素:");
            int insertNum = sc.nextInt();
            
            for (int l = 0;l < arr.length ; l++ ) {        //确定插入位置
                if(insertNum <= arr[l]){
                    index = l;
                    break;
                }
            }

            if(index == -1) {
                index = arr.length;
            }
    
            for(int j = 0,k = 0;j <= (arr.length + i);j++ ) {    //执行插入操作

                if(j != index) {
                    arr1[j] = arr[k];
                    k++;
                } else {
                    arr1[j] = insertNum;
                }

            }

        }
        

        System.out.println("修改后的数组为:");
        for (int i = 0;i < arr1.length; i++ ) {
            
            System.out.println("第" + (i + 1) + "个数组元素为:" + arr1[i]);
            System.out.println();

        }

    }

}

img

数组越界异常了,数组长度为3,你访问了arr[3]导致报错
报错提示了85行,是这行吧

for(int j = 0,k = 0;j <= (arr.length + i);j++ ) {    //执行插入操作

这块逻辑仔细看一下,j最多只能取到arr.length-1

数组越界了,i的值必须小于length,而你加了i,肯定会报错的。

img