2015-03-05 3 views
-5

я есть индекс outofbound исключения 1, размер 1 я не могу показаться, чтобы найти проблему вот мой код:OutOfBoundException: 1, размер: 1

public void removeSpellToGraveyard(ArrayList<SpellCard> spells){ 
    for(int c=0; c<5 ; c++){ 
     SpellCard r = spells.get(c); 
     for(int i=0; i<5;i++){ 
      if(spellArea.get(i) == r){ 
       graveyard.add(spellArea.remove(i)); 

      } 
     } 
    } 
} 
+0

Похож на Java для меня. Если нет, отметьте свой вопрос правильно. –

+0

Ну, предположительно 'spells.size()' равно 1, и вы вызываете 'spells.get (1)', потому что 'c' -' 1'. Либо это, либо эквивалент для 'spellArea'. Обратите внимание, что способ удаления элементов из 'spellArea' довольно рискован - вы будете пропускать значения (если вы удалите элемент 0, следующий элемент для проверки теперь снова элемент 0 ...) –

+1

Как вы это делаете 'spells.size()> = 5' или' spellArea.size()> = 5'? Вы нигде не проверяете это. – Chad

ответ

0

Я собираюсь предоставить версию вашего метода, который достигает своего явного намерения. Я надеюсь, что это по крайней мере поможет вам понять, что вы хотели сделать, если это не решит вашу проблему.

public void removeSpellToGraveyard(ArrayList<SpellCard> spells) { 
    for (SpellCard r: spells) { 
     if (spellArea.remove(r)) { 
      graveyard.add(r); 
     } 
    } 
}