爲什麼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. 什麼是野外注射以及如何避免它?
- 6. 如何避免在Android中發生ANR?
- 7. 什麼是attr'gtbfieldid'以及如何避免自動填充行爲?
- 8. 爲什麼在這裏會發生ArrayIndexOutOfBoundsException?
- 9. 爲什麼我的行名稱被丟棄以及如何避免它?
- 10. 爲什麼一個空結果會凍結腳本以及如何避免它?
- 11. Php,爲什麼「全球容器」不好,以及如何避免它?
- 12. IE8在什麼情況下阻止Javascript以及如何避免它?
- 13. 什麼是間接對象符號,它爲什麼不好,以及如何避免它?
- 14. 什麼是「未知軟件異常(0xc00000fd)」錯誤以及如何避免它?
- 15. 什麼原因以及如何避免[FIN,ACK],[RST]和[RST,ACK]
- 16. 線程同步,以避免ArrayIndexOutOfBoundsException異常
- 17. 垃圾收集器可以釋放單例實例嗎? (以及爲什麼或如何避免它)
- 18. 爲什麼浮動除以較大的浮點數爲零,以及如何避免這種情況在C#中?
- 19. 什麼是全球狀態?它們如何影響可測試性以及如何避免它們?
- 20. 我需要解釋爲什麼字節這樣的行爲,以及如何避免它
- 21. 循環矢量化以及如何避免它
- 22. 爲什麼我在嘗試刪除listView android中的某行時發生ArrayIndexOutOfBoundsException?
- 23. PatternPathMotion Android,它究竟做了什麼以及如何使用它?
- 24. 爲什麼UIButton外觀變更披露?如何避免它?
- 25. 爲什麼WriteFile調用ReadFile,我該如何避免它?
- 26. 爲什麼要在SQL中避免SELECT *?
- 27. EJB。什麼是它爲什麼存在以及它如何工作?
- 28. 究竟什麼是活鎖?在SQL中,它是如何發生的? T-SQL開發者可以做什麼來避免它?
- 29. 爲什麼要避免Application.Worksheetfunction?
- 30. 什麼是(void(**)())以及如何typedef它?
那麼天真的回答是:「因爲你試圖訪問一個不存在的數組索引,因此超出了數組的範圍「,這意味着索引太大或太小(在後一種情況下最可能是負數)。然而,基本上不可能在沒有A)的情況下幫助你解決問題。A)更多描述或B)代碼示例(最好是B,真的)。 – eldarerathis 2011-02-10 14:24:20
甚至更短的答案:不要訪問超出其聲明邊界的數組。 – 2011-02-10 14:25:30