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日

悬赏问题

  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 angular项目错误
  • ¥20 需要帮我远程操控一下,运行一下我的那个代码,我觉得我无能为力了
  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)