我有一段Java(Android)中的代码偶尔会产生ArrayIndexOutOfBoundsException。为什么此代码会生成ArrayIndexOutOfBoundsException?
String characterLevel = mCharacterModel.CharacterLevel() >=
MessageModel.CharacterLevels.length ? "Hyperion Overlord" :
MessageModel.CharacterLevels[mCharacterModel.CharacterLevel()];
mCharacterModel.CharacterLevel()方法始终为1或更多。
MessageModel.CharacterLevels数组定义如下,包含大约50个元素。
public static final String[] CharacterLevels = { "Title", "Title" };
问题的本质是大约正常默认为数据的另一来源,如果数组的大小已经被超过。
我必须缺少一些东西。这是不正确的方式来设置字符串默认为字符串?
我在寻找解决方案,我可以想到的所有地方,我担心我只是错过了上述逻辑中的一些基本缺陷。
任何帮助或建议表示赞赏。
所以我很好奇 - 假设你解决了它,结果是什么问题? – Krease 2013-03-03 21:21:40
崩溃来自Google Play开发者控制台上的Star Traders RPG,所以我只是猜测我修复了它。我从来没有能够自己复制崩溃。我按照建议进行了修改 - 现在我只调用mCharacterModel。CharacterLevel()一次,以防其他线程更新角色的统计信息。我还添加了一个检查来确保级别不是负面的。 CharacterLevels []永远不会被修改,所以我跳过了。我还重构了与您在下面提出的建议类似的代码。现在我注意'错误报告',并保持我的手指交叉。再次感谢! – 2013-03-04 07:12:40