数组的动态扩容
当我们要以数组的形式输入一组数据却不知道数据的数量时,就不好建立数组,因为不知道建立一个多大的数组,大了浪费空间,小了数据存不下,这个时候就要用到数组的动态扩容了。
那么又要问:什么是动态扩容呢?就是建立一个空的数组,当输入一个数据时,数组就增加一个储存空间,来一个增加一个,就不用担心空间的浪费和空间不够用了。
代码如下:
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
运行结果: