我有这个有趣的ArrayIndexOutofBounds
例外。
代码是这样的:
int m = 0;
while (scan.hasNextInt())
{
intArray[m++] = scan.NextInt();
}
我只是将一堆整数扫描成一个数组,但我总是遇到ArrayIndexOutofBounds
错误。我以为我的int m
已初始化为零?
由于
答案 0 :(得分:4)
inputString.length()
返回字符串中的字符数。它不一定与您字符串中的数字对应。您需要在while
语句中添加其他条件,以确保m
不会超过intArray.length
。此外,您可能希望使用调试器逐步执行代码,以确定数组何时用完空间。
由于java数组是固定大小的,如果您不知道输入的大小,则应使用ArrayList<Integer>
来存储输入。
答案 1 :(得分:0)
数组中是否有任何元素可以从中开始?
在循环的未来迭代中,m不为零,因为你在循环内增加它。
答案 2 :(得分:0)
ArrayIndexOutofBounds意味着您的数组不足以保存您放入其中的值的数量。你在哪里初始化数组intArray?
如果你不知道扫描仪有多少值,我认为是这种情况,你可能想要使用ArrayList。
这样的事情应该有效..
List<Integer> intArray = new ArrayList<Integer>();
while (scan.hasNextInt())
{
intArray.add(scan.NextInt());
}
如果您需要数组中的最终结果而不是ArrayLIst,则可以使用
Integer[] newArray = (Integer[])intArray.toArray();