2014-11-29 2 views
2

Я работаю над роботом-лабиринтом, где робот находит цель, не врезавшись в стены. Я прокомментировал свой код полностью, поэтому, надеюсь, это будет понятно.Java: Как вернуть единственный элемент в ArrayList

В тупике и коридоре будет только один проход в passageDirectionsArrayList. Как вернуть это одно и только направление?

Любая помощь приветствуется :)

PS: Я начинающий программист, все еще учусь так объяснить свой ответ, как если бы вы объяснить это три года :)

ответ

2

Вы можете использовать passageDirections.get(0) , который вернет первый элемент в списке. Поскольку (я надеюсь, что) вы гарантируете, что в списке есть один элемент, который решает вашу проблему.

https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#get(int)

+0

такое простое решение! Не знаю, как я пропустил это ха-ха. Дело в том, что он компилируется нормально, однако он не может запустить его по какой-либо причине :( – codeav3

+2

@ codeav3 Что вы подразумеваете под «* ... не может запустить его по какой-то причине *»? ​​В большинстве случаев причины явно упоминается в сообщениях об ошибках :) – Pshemo

+0

@pshemo его ошибка, которая повторяется непрерывно во время запуска программы. Робот не двигается. 'java.lang.reflect.InvocationTargetException' ...' Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0' ... – codeav3

2

Вы должны проверить размер перед вызовом, чтобы предотвратить IndexOutOfBoundsException

if (passageDirections.size() > 0) 
    passageDirections.get(0) 
+1

Это не мешает «NullPointerException», он предотвращает «IndexOutOfBoundsException». Но по-прежнему стоит сначала проверить. – Tom

+0

Да, спасибо, что поймали это! :) –