簡體   English   中英

while循環中的數組索引超出范圍異常

[英]array index out of bounds exception in a while loop

我有這個有趣的ArrayIndexOutofBounds異常。

代碼是這樣的:

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

我只是將一堆整數掃描到數組中,但始終會收到ArrayIndexOutofBounds錯誤。 我以為我的int m已經被初始化為零了?

謝謝

inputString.length()返回字符串中的字符數。 它不一定與字符串中的數字相對應。您將需要在while語句中添加另一個條件,以確保m不會大於intArray.length 另外,您可能還想通過調試器逐步檢查代碼,以准確確定何時陣列空間不足。

由於java數組是固定大小的,因此,如果您不知道輸入的大小,則應該使用ArrayList<Integer>來存儲輸入。

  1. 數組中是否包含任何元素?

  2. 在循環的未來迭代中,m不為零,因為您在循環內將其遞增。

ArrayIndexOutofBounds表示數組不夠大,無法容納要放入其中的值的數量。 您在哪里初始化數組intArray?

如果您不知道掃描儀的預付款有多少個值(我認為是這樣),則可能要使用ArrayList。

這樣的事情應該起作用。

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

如果需要最終結果在數組而不是ArrayLIst中,則可以使用

Integer[] newArray = (Integer[])intArray.toArray();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM