У меня есть эта строка кода:Странный 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