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