我有这行代码:奇怪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