爲什麼ArrayIndexOutOfBoundsException
會發生,以及如何避免在Android?爲什麼發生ArrayIndexOutOfBoundsException以及如何在Android中避免它?
2
A
回答
4
當您試圖訪問一個不存在的數組項,拋出此異常:訪問數組的項目之前
String [] myArray = new String[2];
myArray[2] = "something"; // Throws exception
myArray[-1] = "something"; // Throws exception
你應該檢查你的索引不是消極和不大於數組長度高。
1
這意味着,如上所述,您訪問一個不存在的數組項。
大多數情況下,這是因爲有人要求數組的大小(長度),然後嘗試讀取最後一項作爲array[length]
。 但陣列在開始,所以最後你可以讀取array[length-1]
Sollution是ofcourse 不要訪問不存在
0
此異常項目無關的Android,因爲Android應用程序使用Java編程語言。相反,你應該問像how to avoid it in Java?
。
而底線是,您正試圖訪問陣列中無效索引處的值。
在這裏閱讀官方文檔:
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/ArrayIndexOutOfBoundsException.html
3
爲什麼ArrayIndexOutOfBoundsException異常發生[...]
這裏是the Java Language Specification: 10.4 Array Access報價:
在運行時檢查所有數組訪問;嘗試使用小於零或大於或等於數組長度的索引會導致拋出ArrayIndexOutOfBoundsException。
[...],以及如何避免它的Android?
確保您的指數在[0 ... yourArray.length
-1]範圍內。
(注-1以上。數組0索引,這意味着你會發現在索引0處的第一個元素,最後在長-1)。
相關問題
- 1. 爲什麼jQuery插件發生衝突,以及如何避免它們?
- 2. 爲什麼GCC4警告,以及如何避免它
- 3. 爲什麼拋出AbandonedMutextException以及如何避免它?
- 4. 爲什麼在這裏會發生ArrayIndexOutOfBoundsException?
- 5. 什麼是attr'gtbfieldid'以及如何避免自動填充行爲?
- 6. Php,爲什麼「全球容器」不好,以及如何避免它?
- 7. 爲什麼我的行名稱被丟棄以及如何避免它?
- 8. 爲什麼一個空結果會凍結腳本以及如何避免它?
- 9. 什麼是間接對象符號,它爲什麼不好,以及如何避免它?
- 10. 什麼原因以及如何避免[FIN,ACK],[RST]和[RST,ACK]
- 11. 垃圾收集器可以釋放單例實例嗎? (以及爲什麼或如何避免它)
- 12. 爲什麼浮動除以較大的浮點數爲零,以及如何避免這種情況在C#中?
- 13. 什麼是全球狀態?它們如何影響可測試性以及如何避免它們?
- 14. 我需要解釋爲什麼字節這樣的行爲,以及如何避免它
- 15. 循環矢量化以及如何避免它
- 16. PatternPathMotion Android,它究竟做了什麼以及如何使用它?
- 17. EJB。什麼是它爲什麼存在以及它如何工作?
- 18. 有什麼辦法可以避免在Oracle中觸發級聯?
- 19. 什麼是(void(**)())以及如何typedef它?
- 20. Rxjs Observable發送undefined - 如何避免它
- 21. 爲什麼此代碼會生成ArrayIndexOutOfBoundsException?
- 22. 爲什麼要逃避和避免XSS
- 23. 什麼是OutOfMemoryError異常,以及如何生成它?
- 24. 爲什麼要避免CDO在.NET中發送郵件?
- 25. Haskell模糊發生 - 如何避免?
- 26. activeandroid中的mId是什麼以及它何時可以爲null?
- 27. 使用JQuery調用Web服務時可能存在的威脅是什麼,以及如何避免它們?
- 28. 什麼時候我應該調用compileComponents,以及我如何避免這樣做?
- 29. 什麼是named.exe進程,以及如何避免消耗高CPU速率
- 30. 如何(以及爲什麼)可以避免在這些異步方法上返回void?
那麼天真的回答是:「因爲你試圖訪問一個不存在的數組索引,因此超出了數組的範圍「,這意味着索引太大或太小(在後一種情況下最可能是負數)。然而,基本上不可能在沒有A)的情況下幫助你解決問題。A)更多描述或B)代碼示例(最好是B,真的)。 – eldarerathis 2011-02-10 14:24:20
甚至更短的答案:不要訪問超出其聲明邊界的數組。 – 2011-02-10 14:25:30