
keys数组定义如下:
keys = new char[] {resolv,'А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я'};‘resolv’是一个常量char值0x00,但这与此问题无关.
现在,这段代码有时会引发“java.lang.Arrayindexoutofboundsexception:length = 34; index = 34”异常:
protected voID LoadKeyRects() { keyRects = new Rect[keys.length]; // Solve key keyRects[0] = resRect; // Rest of keys int x,y; for (int i=1; i到目前为止,我还没有能够自己重现错误,但我从第三方设备的BUGSense获得了足够的报告来关注它.似乎有时keyRects [i]可能会引用keyRects [keys.length]尽管i
有任何想法吗?
最佳答案我可以在for循环中看到问题.如果您没有访问字段本身,则使用超出范围的字段来结束迭代,这是完全错误的.如果你这样做,你应该采用不同的方式.两个例子:protected voID LoadKeyRects() { keyRects = new Rect[keys.length]; // Solve key keyRects[0] = resRect; // Rest of keys int x,y; for (int i=1; i这将正常工作,没有任何Arrayindexoutofboundsexception肯定.如果您需要访问甚至修改密钥数组,请执行以下 *** 作:
protected voID LoadKeyRects() { final char[] localKeys = keys; keyRects = new Rect[localKeys.length]; // Solve key keyRects[0] = resRect; // Rest of keys int x,y; for (int i=1; i 总结 以上是内存溢出为你收集整理的java和.length上的数组边界全部内容,希望文章能够帮你解决java和.length上的数组边界所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)