Java - установите для i значение 0, i <arraylist.size (), i ++ ... ошибка выхода за границы - PullRequest
0 голосов
/ 18 декабря 2011

Не думаю, что есть что сказать, вот мой код

for (int i = 0; i < numFactors.size(); i++) {
    for (int j = 0; i < denFactors.size(); j++) {
        if (numFactors.get(i) == denFactors.get(j)) {
            commonFactors.add(numFactors.get(i));
        }
    }
}

И я получаю эту ошибку

Exception in thread "Thread-4" java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
    at java.util.ArrayList.RangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at com.creatif.cubes.Fraction.simplify(Fraction.java:64)

Где строка 64 находится в операторе if. Я не могу за свою жизнь найти проблему здесь.

Ответы [ 2 ]

5 голосов
/ 18 декабря 2011

Эта строка

 for (int j = 0; i < denFactors.size(); j++) {

должна быть

 for (int j = 0; j < denFactors.size(); j++) {

Я полагаю.

- также, возможно, вы захотите вызвать все .size()за пределами for.Вы вызываете его каждый раз, когда запускается цикл:)

2 голосов
/ 18 декабря 2011

Ваш внутренний цикл выглядит следующим образом:

for (int j = 0; i < denFactors.size(); j++)

Непонятно, что j прекратит увеличиваться, пока не достигнет denFactors.size(), таким образом, исключение индекса вне границ. Вы имели в виду:

for (int j = 0; j < denFactors.size(); j++)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...