为什么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