Кажется, я получаю исключение из-за пределов, но проблема в том, что это сообщение об ошибке, и мои инструменты отладки System.out и eclipse сообщают мне противоречивую информацию.Java 1.6 java.lang.IndexOutOfBoundsException Вопрос
Это мое исключение:
Исключение в потоке "главный" java.lang.IndexOutOfBoundsException: Индекс: 9, Размер: 9
в java.util.ArrayList.RangeCheck (ArrayList.java : 547)
в java.util.ArrayList.get (ArrayList.java:322)
на InduceC45.C45 (InduceC45.java:61)
на InduceC45.main (InduceC45.java:15)
линии 61 в InduceC45 является:
for(int attLoop = 1; attLoop <= attributes.get(splitAtt); attLoop++){
Он говорит, что splitAtt находится вне границ для атрибутов ArrayList, достаточно просто.
Так что я попытался с помощью отладчика, и я также пытался ставить некоторые System.out, чтобы попытаться выяснить, что происходит, они в основном дали мне ту же информацию, так вот System.out-х
System.out.println("splitAtt="+splitAtt);
System.out.println("attributes="+attributes);
System.out.println("attributes="+attributes.get(splitAtt));
этого распечатки в результате этого:
splitAtt = 9
атрибуты = [3, 3, 3, 2, 3, 6, 3, 4, 4, 2]
атрибуты = 2
Я действительно не понимаю, почему я могу ссылаться на него и не получить сообщение об ошибке, если оно не в цикле. Я не думаю, что я делаю что-нибудь сложное, дайте мне знать, может ли кто-нибудь подумать о возможной причине.
В случае, если кто хочет получить полный источник ... http://github.com/Ryuho/CSC466/blob/master/lab3/src/InduceC45.java Line 61
Почему этот вопрос был поднят? – zengr
Вы действительно хотите установить флажок напротив 'attributes.get (splitAtt)', а не просто 'splitAtt'? –