0

我有这个有趣的ArrayIndexOutofBounds例外。

代码是这样的:

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

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

谢谢

4

3 回答 3

4

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

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

于 2013-01-30T04:03:26.597 回答
0
  1. 数组中是否有任何元素可以开始?

  2. 在循环的未来迭代中,m 不为零,因为您在循环内递增它。

于 2013-01-30T04:00:59.843 回答
0

ArrayIndexOutofBounds 意味着您的数组不足以容纳您放入其中的值的数量。你在哪里初始化数组intArray?

如果您不知道扫描仪预先有多少值(我认为是这种情况),您可能想要使用 ArrayList 代替。

像这样的东西应该工作..

List<Integer> intArray = new ArrayList<Integer>();
while (scan.hasNextInt())
{
    intArray.add(scan.NextInt());
}

如果您需要数组而不是 ArrayLIst 中的最终结果,您可以使用

Integer[] newArray = (Integer[])intArray.toArray();
于 2013-01-30T04:09:24.583 回答