数组的动态扩容

数组的动态扩容

       当我们要以数组的形式输入一组数据却不知道数据的数量时,就不好建立数组,因为不知道建立一个多大的数组,大了浪费空间,小了数据存不下,这个时候就要用到数组的动态扩容了。

       那么又要问:什么是动态扩容呢?就是建立一个空的数组,当输入一个数据时,数组就增加一个储存空间,来一个增加一个,就不用担心空间的浪费和空间不够用了。

代码如下:

import java.util.*;
class Text02{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入数字: ");        //提示用户输入数字,以0结束
        int[] arr = new int[0];                 //定义一个空白数组
        int num = 0;
        while(true){                            //获取数据的循环,知道得到0是结束循环
            num = scanner.nextInt();
            if(num==0){
                break;
            } 
            arr = copyOf(arr,arr.length+1);     //调用xopyOf函数扩充数组
            arr[arr.length-1] = num;            //数组扩充的空间储存刚输入的数据
            System.out.print(arr[arr.length-1]+" ");//打印刚输入的数据
        }
    }
    public static int[] copyOf(int[] arr,int newLen){
        int[] newArr=new int[newLen];        //建立一个新数组,长度是原数组长度+1
        for(int i=0;i<arr.length;i++){       //遍历,将原数组储存的数据赋值给新数组
            newArr[i]=arr[i];
        }
        return newArr;                       //返回新数组
    }
}

举个例子:

输入:1 6 3 2 3 5 2 3 3 1 0

运行结果:

输入:1 2 3 5 4 2

运行结果:

发布了21 篇原创文章 · 获赞 0 · 访问量 251

猜你喜欢

转载自blog.csdn.net/whydeboke/article/details/104384533