我最近在一个程序上工作,我希望该程序读取一个非负值,然后在每次迭代中初始化数组。我声明了数组。这是代码。
import java.util.*;
import java.lang.*;
class Array
{
public static void main(String [] args) {
Scanner in = new Scanner(System.in);
int i = 0;
int [] array;
boolean end = false ;
while (end != true)
{
array = new int[i];
int x = in.nextInt();
if(x > 10)
{
array[i] = x ;
}
if(x < 0)
{
end = true;
for (int j : array)
{
System.out.print(x + " ");
}
}
else
i++;
}
}
}
当我执行此代码时,我得到一个异常提示
线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:0 在Array.main(Array.java:15)
当我给一个大于10的值时,它将打印数组中的负数。这种声明数组并动态更改大小的方法正确吗?
答案 0 :(得分:0)
在初始化int[] array;
时将初始化大小为0的数组。之后,您尝试访问大小为0的数组元素,因此得到一个IndexOutOfBoundsException
。数组初始化后,就无法更改其大小。
为此,您将必须使用列表,例如ArrayList
。
这些大小可以在初始化后扩展或更改。