根据我的理解,我们需要在编译时定义数组大小。但是根据下面的代码,似乎我们也可以在运行时提供数组大小。
public class Test {
public static void main(String args[]){
Scanner scan = new Scanner(System.in);
int length= scan.nextInt();
int arr[] = new int[length];
for(int i =0; i < length;i++){
arr[i]=i;
}
for(int data : arr){
System.out.println("Data: "+data);
}
}
}
如果有人能解释我的行为,我真的很感激。
答案 0 :(得分:0)
是的,您可以将int
类型的任何内容传递给new T[<int>]
构造函数,例如您也可以执行此操作:
int userInput = new Scanner(System.in).nextInt();
int len = 12 + 14 * 3 / userInput;
byte[] arr = new byte[len];
// arr has now the size as specified by len.
答案 1 :(得分:0)
你可以这样 - 你的程序真的不介意你在那个框中写的内容(只要它是一个合理的数组数据结构 - 小于Integer.MAX_VALUE和非负数),直到它开始运行它。 所以,如果你写
int[] box = new int[4];
Java在构建它之前并不知道数组的长度是4.事实上,在代码运行之前,数组甚至都没有初始化。
在这种情况下,有意义的是你可以使用变量作为数组长度,只要程序运行该行代码时,变量就是数组长度的合理数字。
答案 2 :(得分:0)
在Java中,您可以创建一个数组,其大小将在运行时确定。
从你的代码:
int arr[] = new int[length];
在运行时到达此行时,程序会分配一个整数数组,其大小等于变量length
的当前值,并通过arr