我试图声明一个数组而不必给出固定的初始大小,因为我想接受用户的大小。这是我想出的最新方法。我可以在声明时给出一个最大可接受的值,但我不想这样做,因为它对空间的利用很差。
class Example{
int i;
Scanner in = new Scanner(System.in);
Example(){
System.out.println("in constructor");
System.out.println("enter array size: ");
i = in.nextInt();
}
int[] arr = new int[i];
void perform(){
for(int j=0;j<i;j++)
arr[j] = in.nextInt();
for(int j=0;j<i;j++)
System.out.println(arr[j]);
}
}
public class Main{
public static void main(String[] args){
Example obj = new Example();
obj.perform();
}
}
输出是这样的:-在构造函数中
输入数组大小:
5
1//这是我尝试输入数组的第一个元素。
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
最佳答案
只需将其声明为 int[] arr;
但是一旦你知道就分配它i
有效(即 > 0)。那么你可以使用arr.length
为您的循环:
Example() {
int i; // Local
do {
System.out.println("enter array size: ");
i = in.nextInt();
} while (i <= 0);
arr = new int[i];
}
void perform() {
for (int j = 0; j < arr.length; j++) {
arr[j] = in.nextInt();
}
// etc.
}
关于java - java - 如何声明数组而不必在java中给出固定的初始大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62616100/