2012-10-24 126 views
0

我完全失去了如何将坐标排序到数组中,并找到它们之间的距离。这是一个问题:多个坐标之间的距离

  1. 创建一个名为“Circle”的新类,该类可用于创建自定义的圆对象。您的班级应包括以下内容 - 请务必对班级进行适当的评论: double radius, double xPosition, double yPosition和 计算从一个圆的xPosition和yPosition到另一个圆的xPosition和yPosition的距离的方法圈。使用标准距离公式来计算此值。就此方法而言,您只需计算从中心点到中心点的距离。这里有一个方法头,让你开始:

    公共双distanceFrom(圆测试)

  2. 创建一个名为“Assignment06b”新类。在本课中进行以下操作:

    提示用户输入多个圆圈(即,您想要创建多少个圆圈?) 接下来,要求用户输入半径xPosition和yPosition圈。将其输入存储在适当大小的圆圈数组中。 最后,遍历数组并显示每个圆的距离信息。确保您不计算从给定圆到本身的距离(即无需计算圆#1和圆#1之间的距离) - 以下是您程序的一个运行示例。

这是我到目前为止有:

import java.util.Scanner; 

public class Assignment06b 
{ 
    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     System.out.print("How many circles do you want to create?:"); 
     int amount = input.nextInt(); 


     int[] arrayX = new int [amount]; 
     int[] arrayY = new int [amount]; 


     int counter = 0; 
     for (counter = 0; counter < amount; counter++) 
     { 
      System.out.println("Enter info for Circle #" + (counter + 1)); 
      System.out.print("Radius: "); 
      double width = input.nextDouble(); 

      System.out.print("X Position: "); 
      arrayX[counter] = input.nextInt(); 

      System.out.print("Y Position:"); 
      arrayY[counter] = input.nextInt(); 
     } 

    } 

    class Circle 
    { 
     double radius; 
     double xPosition; 
     double yPosition; 

     Circle(double radius, double xPosition, double yPosition) 
     { 

     } 

     public double distanceFrom(Circle test) 
     { 
      double equation = (xPosition-xPosition)*(xPosition-xPosition) + (yPosition-yPosition)*(yPosition-yPosition); 
      double answer = Math.pow(equation, 0.5); 
      return answer; 
     } 
    } 
} 
+0

您可以添加示例运行吗? –

+0

现在运行良好。它只是询问用户需要多少个圆圈,并输入半径和坐标。我在将坐标放入数组中并找到它们之间的距离时遇到了问题。最终的结果应该是这样的:对于一个圆圈距离报告1 *圈#2是7.0710678118654755单位处 *圈#3是8.276472678623424单位处 距离报告圈#2 *圈#1 7.0710678118654755单位处 *第3圈是15。116216457830975单位以外 – JaxJags

+0

说明说使用一系列的圆圈。你的代码只有一系列ints,我认为这是不必要的。 –

回答

1

你周围物体朝向踮起脚尖在这里,改变周围的东西,所以你必须圆的阵列,而不是整数数组:

Circle[] arrayCircles = new Circle [amount]; 

而且你是不是在你的圈子类设置任何值,你可能要解决这个问题:

Circle(double radius, double xPosition, double yPosition) 
{ 
    this.radius = radius; 
    this.xPosition = xPosition; 
    this.yPosition = yPosition; 
} 

那么你可以添加圈子到您的收藏这样的:

arrayCirles[0] = new Circle(myRadius, myXPosition, myYPosition); 

,并致电distanceFrom方法调用就像这样:

//Obviously do this in a loop of some kind and make sure they exist first 
arrayCircles[0].distanceFrom(arrayCircles[1]); 

希望剩下的你可以计算出自己

(再看看你的distanceFrom方法,你想比较你传递的圆作为参数,而不是你自己)

+0

谢谢你的帮助。但我有个问题。你会直接从扫描仪输入数值到arrayCircles [0] = new Circle(myRadius,myXPosition,myYPosition); ? – JaxJags

+0

您可以将扫描仪的结果存储到一些临时变量中,例如'double myRadius = input.nextDouble();'然后一旦拥有所有3个值,就调用Circle构造函数 –