数组的动态扩容

数组的动态扩容

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

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

代码如下:

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

运行结果:

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值