while循环中的数组索引超出范围异常

时间:2013-01-30 03:59:34

标签: java arrays exception

我有这个有趣的ArrayIndexOutofBounds例外。

代码是这样的:

int m = 0;
while (scan.hasNextInt())
{
    intArray[m++] = scan.NextInt();
}

我只是将一堆整数扫描成一个数组,但我总是遇到ArrayIndexOutofBounds错误。我以为我的int m已初始化为零?

由于

3 个答案:

答案 0 :(得分:4)

inputString.length()返回字符串中的字符数。它不一定与您字符串中的数字对应。您需要在while语句中添加其他条件,以确保m不会超过intArray.length。此外,您可能希望使用调试器逐步执行代码,以确定数组何时用完空间。

由于java数组是固定大小的,如果您不知道输入的大小,则应使用ArrayList<Integer>来存储输入。

答案 1 :(得分:0)

  1. 数组中是否有任何元素可以从中开始?

  2. 在循环的未来迭代中,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();