我有這行代碼:奇怪java.lang.ArrayIndexOutOfBoundsException:-1
if (gram.getVN().get(i) != gram.getAxiom() &&
lr1.getAutoma()[j][lr1.getColumn().indexOf(gram.getVN().get(i))].size() != 0) {
//some actions
}
,它工作正常。但如果我這樣做:
System.out.println(lr1.getAutoma()[j][lr1.getColumn().indexOf(gram.getVN().get(i))].size());
if (gram.getVN().get(i) != gram.getAxiom() &&
lr1.getAutoma()[j][lr1.getColumn().indexOf(gram.getVN().get(i))].size() != 0) {
//some actions
}
然後我得到的例外,我不明白爲什麼!誰能幫我?謝謝..
那麼*你會得到例外嗎?你能簡化這個例子嗎? (在這段代碼中有很多事情我們沒有任何關係。)注意,在第一種情況下,如果第一個表達式('gram.getVN()。get(i)!= gram.getAxiom()')計算結果爲'false',那麼它*不會*評估第二個表達式 - 而在第二種情況下,無論如何你都打印出第二個表達式。 –
'j'的價值是什麼?如何'lr1.getColumn()。indexOf(gram.getVN()。get(i))'?該錯誤消息幾乎解釋了這個問題:您正在使用數組索引-1,這是超出範圍的(因爲所有數組索引必須> = 0)。順便提一句,你可能想要考慮一個臨時變量 - 內聯一切都會讓閱讀變得困難。 – yshavit