ZYa222999 2023-11-01 21:07 采纳率: 33.3%
浏览 5

java数组扩容问题


import java.util.Scanner;
public class ArrayAdd{
    public static void main(String[] args){
        //数组扩容
        //{1,2,3}→{1234}
        //用户输入y/n
        //如果输入y,则继续扩容
        //输入n,则结束扩容
        Scanner myScanner = new Scanner(System.in);
        int[] arr = {1, 2, 3};
        int[] arrNew = new int[arr.length + 1];
        for(int i = 0;i < arr.length;i++){
            arrNew[i] = arr[i];
        }
        arrNew[arrNew.length - 1] = 4;
        arr = arrNew;
        for(int i = 0;i < arrNew.length;i++){
            System.out.println(arrNew[i]);
        }
        System.out.println("请输入y/n");
        char response = myScanner.next().charAt(0);
        if(response == 'y'){
            System.out.println("请输入需要添加的数字:");
            int num = myScanner.nextInt();
            int[] arrNew2 = new int[arr.length + 1];
            for(int i = 0;i < arr.length;i++){
                arrNew2[i] = arr[i];
            }
            arrNew[arrNew2.length - 1] = num;
            for(int i = 0;i < arrNew2.length;i++){
                System.out.println(arrNew2[i]);
            }
            arr = arrNew2;
        }
        
    }
}

请问为什么运行结果显示数组越界呀?谢谢!

img

  • 写回答

2条回答 默认 最新

  • 创意程序员 2023-11-06 12:41
    关注

    arr 和 arrNew 的长度都变成了 arr.length + 1
    arrNew2 的长度再次加了1
    但是第30行,数组用的 arrNew,长度用的 arrNew2.length

    评论

报告相同问题?

问题事件

  • 创建了问题 11月1日