2015-03-10 4 views
0

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

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

Вот соответствующий код, который до сих пор:

{ 

private int xcoord, ycoord; //Cartesian coordinates of the robot 
private int identification; //Identification number of the robot 
private double rate; //Rate at which the robot explores 
private double traveled; //Distance the robot has travelled 
private double timeSpent; //Time spent travelling 
private double longestLeg; //Longest leg of the journey 
private double longestLegTime; //Time on the longest leg 

//Sets up a robot with the given ID number and beginning x and y coordinates 
public Robot (int id, int x, int y) 
{ 
    identification = id; 
    xcoord = x; 
    ycoord = y; 
    traveled = 0; 
    rate = 5.0; 
} 

//Has the robot travel to the set coordinates 
public double setDestination (int x, int y) 
{ 
    double distance = Math.pow(x - xcoord, 2) + Math.pow(y - ycoord, 2); 
    traveled += Math.sqrt(distance); 
    xcoord = x; 
    ycoord = y; 
    timeSpent += Math.sqrt(distance)/rate; 

    return traveled; 
} 

//Gets the time spent travelling 
public double getTimeSpent() 
{ 
    return timeSpent; 
} 


//Sets the rate at which the robot travels 
public void setRate(double setrate) 
{ 
    rate = setrate; 
} 

//Returns longest leg of the robot's travels 
public int getLongestLeg() 
{ 
    return longestLeg; 
} 

//Returns time of longest leg 
public double getLongestLegTime() 
{ 
    return longestLegTime; 
} 

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

Любые предложения были бы замечательными. Благодаря!

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

+0

Пожалуйста, удалите ваш дополнительный код и только покажите минимальное количество кода, необходимого для ответа на вопрос. Например, ваши получатели - это просто дополнительный код, который не добавляет проблемы. См. [Здесь] (http://stackoverflow.com/help/mcve) –

+0

Я оставил эти геттеры специально, потому что я думал, что они могут быть релевантными ... тем более, что вопрос касался именно того, что он вернул правильные вещи. – Michael

ответ

1

Чтобы избежать литья, это должно работать:

longestLeg = Math.max(distance, longestLeg); 

Если вы получаете ошибку о требующей Int, это, вероятно, означает, что один из ваших параметров был ИНТ, когда его не должно быть. Не могу быть уверен, не видя точно, как вы его вызывали, но я подозреваю, что это может быть связано с тем, что getLongestLeg() возвращает longestLeg как int, когда он фактически является двойным. Я хотел бы предложить изменить это метод:

//Returns longest leg of the robot's travels 
public double getLongestLeg() 
{ 
    return longestLeg; 
} 

С точки зрения вашего второго вопроса, чтобы вычислить расстояние между другим роботом, метод calcDist(), вероятно, следует искать что-то вроде этого:

public double calcDist(Robot other) 
    { 
     return Math.sqrt(Math.pow(this.getX() - other.getX(), 2) + Math.pow(this.getY() - other.getY(), 2)); 
    } 
+0

Ну ладно, это сработало для меня. Это могло быть ошибкой с моей стороны. Проблема в том, что она возвращает все пройденное расстояние, а не отдельную ногу. Любые другие предложения для этого? – Michael

+0

Где вы устанавливаете самую длинную ногу? – dawner

+0

Получил исправление. Я имел это как Math.max (путешествовал, longestLeg). Я сменил путешествие на квадрат расстояния, и он отлично работал. У вас возникло какое-либо предположение, чтобы начать меня с последней части вопроса (получение расстояния между двумя разными объектами робота)? – Michael

0

Если у меня есть вопрос, вы просто хотели использовать Math.max() с помощью целых чисел.

Попробуйте

(int) Math.max() 
+0

Извините, должен был быть более конкретным. Ошибка при попытке вернуть longestLeg. Даже приведение к типу не позволяет ему работать. – Michael

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