Java - 如何获得最大的计算结果

时间:2015-03-10 23:07:42

标签: 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;
}

我还不允许使用if语句或循环,所以它必须使用Math.max我猜。我尝试使用它,但它给了我一个错误,说它需要一个int,但我提供了一个双。

任何建议都很棒。谢谢!

如果你能够,我的代码也有最后一个问题。我需要创建一个方法来获取两个Robot对象之间的距离。我甚至不确定如何开始这个,因为我们尚未真正使用它。关于如何开始这个的建议会很棒。再次感谢。

2 个答案:

答案 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()