Как обеспечить выполнение инструкции if, несмотря на другие текущие задачи - робот-финч

90
7

Мне было поручено создать программу, которая заставит робота-финча перемещаться несколько случайным образом за выделенный промежуток времени, подсчитывая количество объектов, которые он обнаруживает во время движения, и затем возвращает эту сумму.

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

главный:

    int millsec = 5000;
int obstacleOccur = finchRandom(millsec);
System.out.println(obstacleOccur);

метод:

static public int finchRandom(int x)
{
Finch myf = new Finch();
Random rand = new Random();
int obs = 0;
long time = System.currentTimeMillis()+x;

while(time - System.currentTimeMillis() > 0)
{
if (myf.isObstacle())
{
obs++; //this counts the obstacles
System.out.println("Obstacle");
} //below activates the wheels to move randomly,
//the function is setWheelVelocities(leftWheel,rightWheel,duration)
myf.setWheelVelocities(rand.nextInt(150)-75,rand.nextInt(150)-75,rand.nextInt(x/2));
}
return obs; //returns the count of obstacles
}

Я считаю, что это потому, что оператор if и приращение для подсчета препятствий не могут быть запущены во время движения робота финча. Есть ли какие-либо способы обойти это?

Заранее спасибо.

спросил(а) 2016-03-08T02:39:00+03:00 3 года, 11 месяцев назад
1
Решение
52

Ответ - многопоточное программирование, ваша задача - выяснить, как использовать THread или Runnable или лямбда-выражение для этого. Потому что любой данный поток может делать только одно за раз, и вам нужно делать по меньшей мере две вещи одновременно.

ответил(а) 2016-03-08T05:19:00+03:00 3 года, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема