2014-11-22 2 views
2

나는 두 개의 Point 객체 사이의 거리를 계산하는 방법을 만들려고하고있다 : 나는 점점 계속 컴파일 할 때계산 getY()와 getX()를 사용하여 두 점 사이의 거리

public class Point { 

    private double x; 
    private double y; 

    public Point (double x, double y) { 

     this.x = x; 
     this.y = y; 
    } 

    private static void main (String[] args) { 
     Point p1 = new Point(5.0,6.0); 
     Point p2 = new Point(2.0,2.0); 
     double distance = Math.sqrt((p1.getX() - p2.getX()) * (p1.getX() - p2.getX()) + 
            (p1.getY() - p2.getY()) * (p1.getY() - p2.getY())); 
     System.out.println(distance); 

    } 

} 

오류 :

Point.java:16: error: cannot find symbol 
    double distance = Math.sqrt((p1.getX() - p2.getX()) * (p1.getX() - p2.getX()) + 
           ^
+2

귀하의 포인트 클래스에는'getX()'메소드가 없습니다. – Jens

+0

p1.x 할 수 있습니까? – Sybren

답변

3

실제로 문제는 getter 및 setter 메서드 (특히 getter 메서드)를 만들지 않았기 때문입니다. Java에서는 getter 및 setter 메서드가 자동으로 만들어지지 않습니다. 직접 명시 적으로 만들어야합니다. 그래서, 바로 다음 코드를 추가

public double getX() { 
     return x; 
    } 

    public void setX(double x) { 
     this.x = x; 
    } 

    public double getY() { 
     return y; 
    } 

    public void setY(double y) { 
     this.y = y; 
    } 

또한 단지 p1.x을 갈 수를하지만, getter와 setter로 Point 클래스의 좌표 (x와 y)를 캡슐화하는 더 좋은 연습이 될 것입니다. 주요 방법이 작동하려면 또한

...

, 그것은 public하지 private로 설정 될 필요가있다.