我有一段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