由于在java中数组只有两种:固定长度的数组和空的数组,所以在理论上java中是不可以定义任意长度的数组的,但是我们可以通过两个数组互相赋值的方法来达到所需要的不定长数组。
主要思路:先定义一个空的数组arr1,然后定义一个比arr1多一个长度的数组arr2,这时我们从键盘输入一个数存到a里面,然后通过for循环把arr1里面的值赋给arr2,由于第一次赋值中arr1是空的,所以arr2比arr1多一个长度所以现在arr2是长度为1且存的数是0,即arr2[0]=0,然后把存到a里面的数通过语句arr2[arr1.length]=a;复制到arr2里面,此时arr2的长度还是1但是里面的数值就是我们刚刚从键盘输入的数了,然后通过语句arr1=arr2;把数组arr2复制到arr1里面,这时我们从键盘中输入的数就存到arr1中了。然后通过循环语句不断从键盘输入数据,就可以达到从键盘输入一个不定长度的数组了。
代码如下:
public static void main(String[] args) {
// TODO Auto-generated method stub
int []arr1=new int[0]; //先定义一个空的数组arr1
int b=1;
while(b==1){
int []arr2=new int[arr1.length+1];//紧接上句定义一个比arr1多一个长度的数组arr2
System.out.println("请输入一个数:");
Scanner input=new Scanner(System.in);
int a=input.nextInt();//从键盘输入数字然后存到a中
for(int i=0;i<arr1.length;i++)//通过for循环把arr1数组的值给到arr2中
{
arr2[i]=arr1[i];
}
arr2[arr1.length]=a;//把a里面存储的数字给到数组arr2,
arr1=arr2;//再把arr2数组里面所有数值复制到arr1里面
System.out.println("是否继续执行(除1外任意数字结束):");//判断是否需要继续输入数字
Scanner input1=new Scanner(System.in);
b=input.nextInt();//若b的取值不为1的话就终止输入结束while循环
}
for(int s:arr1){System.out.println(s);} //在循环结束后把数组arr1里面的数据打印出来
}
希望大家多多点赞支持一下,也欢迎大家在评论区踊跃留言一起讨论