Я пишу метод в классе «CartesianPoint», который находит расстояние между двумя декартовыми точками. Всякий раз, когда я это называю, расстояние, которое распечатывается, всегда равно нулю, независимо от того, какие точки я использую. Я считаю, что новая точка, которую я создаю, чтобы найти расстояние, как-то переопределяет мои переменные экземпляра, но я не знаю, как правильно это кодировать.Java: расстояние между двумя точками, всегда возвращающее ноль
Вот CartesianPoint Класс:
public class CartesianPoint implements Point {
private static double x;
private static double y;
public CartesianPoint(double xCoord, double yCoord){
x = xCoord;
y = yCoord;
}
public double xCoordinate(){
return x;
}
public double yCoordinate(){
return y;
}
public double radius(){
double radius = Math.sqrt(Math.pow(xCoordinate(), 2)+Math.pow(yCoordinate(), 2));
return radius;
}
public double angle(){
double angle = Math.acos(xCoordinate()/radius());
return angle;
}
public double distanceFrom(Point other){
//System.out.println("x coordinate of this: " + xCoordinate());
//System.out.println("x coordinate of other: " + other.xCoordinate());
double xDistance = x - other.xCoordinate();
double yDistance = y - other.yCoordinate();
double distance = Math.sqrt(Math.pow(xDistance, 2) - Math.pow(yDistance, 2));
return distance;
}
//not currently being used
public Point rotate90(){
Point rotatedPoint = new CartesianPoint(0, 0);
return rotatedPoint;
}
}
Вот метод вызова в моем тестер класса:
public class tester{
public static void main(String[] args){
Point p = new CartesianPoint(3, 4);
Point a = new CartesianPoint(6, 7);
System.out.println("Cartesian: (" + p.xCoordinate() + ", " + p.yCoordinate() + ")");
System.out.println("Polar: (" + p.radius() + ", " + p.angle() + ")");
System.out.println("Distance: " + p.distanceFrom(a));
}
}
И это выход я получаю:
Cartesian: (6.0, 7.0)
Polar: (9.219544457292887, 0.8621700546672264)
Distance: 0.0
Чтобы уточнить, Cartesian и Polar должны печатать координаты 'p', а не 'a', как они делают прямо сейчас. Кажется, что каждая новая точка, созданная, переопределяет координаты последней точки.
Любая помощь на это очень ценится!
Удалить ключевое слово static из x и y –