2013-06-25 2 views
1

Я делаю домашнее задание для программирования Java. Меня просят написать метод, который возвращает расстояние между двумя точками. Я должен использовать приведенную формулу, что distance = square root((x2 - x1)*(x2 - x1) +(y2 - y1)*(y2 - y1)).Метод принимает другой объект как параметр

В нижеследующих кодах, объект a будет содержать текущую координату x1 и y1, а b будет координатой x2 и y2, переданной для перемещения в каком-либо месте.

Как написать метод в этом классе, не имея других классов и других элементов, таких как x2, y2? В объектах есть два значения, но как я могу назначить каждый x1 и x2, а y1 и y2? Я нашел определение вектора для java, но я не уверен, что он применим для этого. У кого-нибудь есть идея?

public class MyPoint{ 
    private int x; 
    private int y; 
} 

public MyPoint(int x, int y){ 
     this.x = x; 
     this.y = y; 
} 

public int distanceTo(MyPoint a, MyPoint b){ 
    MyPoint.x1 = a; 
    MyPoint.y1 = a; 
    MyPoint.x2 = b; 
    MyPoint.y2 = b; 
    double distance = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)); 
    return distance; 
} 
} 
+0

Queens College, курс Ландау на Java? –

+0

Off topic: используйте 'Math.pow (x2-x1,2)' вместо '(x2-x1) * (x2-x1)'. В общем, когда вам нужно сделать власть, используйте 'Math.pow (выражение, мощность)' – BackSlash

+2

@BackSlash: не по теме, но если он делает много вычислений, то код написан как '(x2-x1) * (x2-x1) ', лучше, чем использование Math.pow. Вы должны прокомментировать это, чтобы понять, почему. –

ответ

3

Метод distanceTo должен принимать только один параметр, объект MyPoint, а не два параметра:

public double distanceTo(MyPoint other) { 
    // ... 
} 

Первым объектом сравнения будет текущий объект, тот, чей метод вызывается ,

Тогда в теле метода вы сравниваете полей текущего объекта, в this.x и this.y с х и у значений объекта, передаваемого в параметре метода, other.x и other.y.

Кроме того, метод, вероятно, должен возвращать двойной, а не int, как вы его определили.

Что касается,

Как можно написать метод в этом классе без наличия других классов и других элементов, таких как x2, y2?

Я не совсем уверен, что вы подразумеваете под этим.

+0

@Hovercreaft: Спасибо за ваш ответ. Используя один параметр, я не думал об этом, но это имеет смысл. Кстати, позвольте мне уточнить вопрос, который вы не получили. –

+1

Я назвал эту страницу следующей. http://docs.oracle.com/javase/tutorial/java/javaOO/objects.html Он объясняет, что метод well принимает объект как параметр, хотя он имеет три java-файла. Мне нужно было положить все в один файл java. Вот что я пытался сказать. Благодарю. –

0
public class Point 
{ 
    int x,y; 

    public Point(int x, int y) 
    { 
     this.x = x; 
     this.y = y; 
    } 
    public static double distance(Point a, Point b) 
    { 
     return Math.sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); 
    } 
    public static void main(String[] args) 
    { 
     Point a = new Point(0,0); 
     Point b = new Point(3,5); 
     System.out.println(distance(a,b)); 
    } 
} 
+0

Благодарим вас за полные коды. Он испускал ошибки компиляции «не может найти символ», хотя я получил подсказку из вашего кода, чтобы решить проблему. Я ценю это! –

1

Вам не нужно объявлять MyPoint.x1 = a. Это на самом деле ничего не делает. Вместо этого вы можете ссылаться на такие точки, как a.x или b.y.

Кроме того, вы должны убедиться, что ваш тип возврата - это то, что вы хотите.

EDIT: Судно на воздушной подушке по существу говорит так же, как и я, но немного приятнее.

+0

@ Vnquish46: Спасибо за ввод. Я считаю, что это мое. –