2014-02-17 5 views
-1

Мне нужно сравнить элементы из 2 векторов, но он продолжает бросать исключение. Пожалуйста, помогите, мне интересно, если Im делает неправильные сравнения, так как векторы используют методы.Мне нужно сравнить элементы из двух векторов JAVA

for (int i=0; i <= vect.size(); i++) 
      { 
       if (i >0 && i <= vect.size()) 
       {  
       if(vect.get(i) == vect.get(i--)) //EXCEPTION HERE 
       { 
        vect2.add(vect.get(i)+ ""); 
       }else{vect2.add(vect.get(i++));} 

       }     
      } 

ответ

1

Первая проблема:

for (int i=0; i <= vect.size(); i++) 
       ↑ 

Вторая проблема возникает, когда вы изменить это <, потому что вы все еще есть vect.get(i++).

Вы должны быть осторожны с индексами, так как массивы с нуля и Vectorы подкреплено массива внутри, индексы курсируют [0, размер-1].

2

Никогда не изменяйте значение i в for-loop!

Заменить i-- на i-1 и i++ по i+1 и адаптировать свои условия на i, чтобы проверить правильный диапазон значений.

+0

Но но ... Я вижу, что все это делают все время: for (int i = ...; i> = 0; --i) {}. Не говорите мне, что это неправильно. – Durandal

+0

Нет, это прекрасно. Что не делает: '' for (int i = ...) {i ++} '' –

Смежные вопросы