2014-11-30 2 views
-1

Я делаю робот-лабиринт, где робот находит цель, не врезавшись в стены.ArrayList не заселен

Мой код компилируется нормально, однако:

  • На deadends робот, кажется, пытаются продвинуться в направлении он сталкивается, а затем врезается в стены много.
  • В corridorsArrayList пуст, и я не знаю почему.

Любая помощь оценена :)

+1

Когда вы вызываете 'коридор', вы не называете' passExits', насколько я могу судить, так что это объясняет это ... –

+0

Кроме того, как в ваших методах 'passExits', так и' nonWallExits', re * безоговорочно * добавление направлений в ваш список - только приращение счетчика является частью оператора 'if'. Вам нужны скобки вокруг тела: 'if (condition) {statement1; оператор2; } ' –

+0

Вам нужно вызвать методы passExists и noWallExists, чтобы заполнить два массива, прежде чем называть ваши методы ожидания и коридора. – Prateek

ответ

1

Ваш метод passageExists возвращает число проходов, которые существуют, как целое число. Итак, сначала вам нужно проверить, существует ли число проходов> 1, только тогда вы получите что-то из массива.

То есть, ты так что-то вроде этого:

if(passageExists(robot) > 0) 
    passageDirections.get(0); 

И так же обстоит дело со стенами.

+0

Но ему нужно заявление о возврате? – codeav3

+0

Ya, так что вы делаете в своей функции коридора, которую вы говорите, если (passExists (robot)> 0) return passageDirections.get (0). Что-то вроде этого. На самом деле я бы посоветовал не делать эти два arraylists глобальными – Prateek

+0

изначально они не были глобальными. Они были в соответствующем методе. Например. 'passDirections'' ArrayList' был в методе 'passExits'. Тем не менее, он не компилировался :(Я сделал следующее: 'if (passExits (robot) == 1) return passageDirections.get (0);' однако при компиляции он говорит, что отсутствует инструкция 'return' :( – codeav3

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