欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

JAVA数组扩容

时间:2023-08-04

 需求: 数组扩容,将int[] arr {1, 2, 3}扩充成{1, 2, 3, 4}
           并提示输出成功,是否继续 y/n

思路分析:

1.化繁为简,将需求拆分成一个个小需求
        1.1此时我们先完成扩容的功能
            我们首先定义一个新的数组,长度为new arrNum[arr.length + 1]
            然后将arr中的元素遍历道新数组中,再添加想要添加的元素
            最后将新数组赋给arr  arr = arrNum;(注意,数组的赋值给的是存在于栈中的地址,而不是具体的值,真正的值存在于堆的空间当中,是将arr也指向arrNum的堆空间,原本的arr所对应的空间将会被jvm当做垃圾清除)

int[] arr = {1, 2, 3};int[] arrNum = new int[arr.length + 1];for ( int i = 0; i < arr.length; i++) {arrNum[i] = arr[i];} arrNum[arrNum.length - 1] = add;arr = arrNum;System.out.println("====arr扩容后====");for ( int i = 0; i < arr.length; i++ ) {System.out.print(arr[i] + "t");}

1.2由死变活,将代码优化,更具交互性,
             首先创建一个Scanner对象
             并且再创建一个变量接收用户的输入
             因为不确定用户需要添加的次数,此时可使用do-while + break的方法
             最后询问是否需要继续添加

Scanner myScanner = new Scanner(System.in);int[] arr = {1, 2, 3};do{int[] arrNum = new int[arr.length + 1];//这一句必须包进来,否则arr的长度会一直是4,从而导致每输入一个,则被替换,而不是扩充了(本人亲身经历,说多了都是泪啊)for ( int i = 0; i < arr.length; i++) {arrNum[i] = arr[i];}System.out.println("请添加需要扩充的元素:");int add = myScanner.nextInt();arrNum[arrNum.length - 1] = add;arr = arrNum;System.out.println("====arr扩容后====");for ( int i = 0; i < arr.length; i++ ) {System.out.print(arr[i] + "t");}System.out.println("您是否需要继续添加 y/n");char chars = myScanner.next().charAt(0);if(chars == 'n') {break;}}while(true);

至此一个数组扩充的程序就完成了 

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。