【发布时间】:2020-10-18 07:35:18
【问题描述】:
我试图声明一个数组而不必给出固定的初始大小,因为我想接受用户的大小。这是我想出的最新方法。我可以在声明时给出一个最大可接受的值,但我不想这样做,因为它对空间的使用很差。
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
【问题讨论】:
-
这能回答你的问题吗? Variable length (Dynamic) Arrays in Java
-
不确定这是否有效,因为创建数组时
i将是0。在您的构造函数中分配您的数组。 -
即使在构造函数中给定了
i的固定值,也会出现同样的错误。 -
@SamagraDev 请通过编辑您的帖子包括您的修改。不要覆盖当前存在的内容,只需将其添加到问题的底部即可。
-
我没有覆盖任何东西。我只是在问题中添加了输出,没有对最初编写的内容进行任何更改。 @二恶英
标签: java arrays exception java.util.scanner