我们正致力于创建对象和驱动程序类。我有一个对象类,可以为移动的探索机器人做各种事情。
我现在需要做的是创建一个方法,该方法返回机器人在一个单一移动命令中移动的最大距离。我还需要返回移动那段距离的时间。
到目前为止,这是相关的代码:
{
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;
}
我还不允许使用if语句或循环,所以它必须使用Math.max我猜。我尝试使用它,但它给了我一个错误,说它需要一个int,但我提供了一个双。
任何建议都很棒。谢谢!
如果你能够,我的代码也有最后一个问题。我需要创建一个方法来获取两个Robot对象之间的距离。我甚至不确定如何开始这个,因为我们尚未真正使用它。关于如何开始这个的建议会很棒。再次感谢。
答案 0 :(得分:1)
为避免施放,这应该有效:
longestLeg = Math.max(distance, longestLeg);
如果您收到有关要求int的错误,则可能意味着您的参数之一是不应该的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));
}
答案 1 :(得分:0)
如果我的问题正确,你只想将Math.max()与整数一起使用。
尝试
(int) Math.max()