Java OOP - проверка круговой концентрической задачи (техническая проблема) - PullRequest
0 голосов
/ 27 октября 2019

В этой Программе я хотел бы создать класс Circle и проверить несколько кругов, если они концентрически друг с другом. Однако я не уверен, что не так с моим кодом в методе isConcentricWith. Почему в параметре должен быть Circle, а не Point, и почему я не могу использовать this.center == center (это приведет к ошибке по параметру Circle.

Кто-нибудь укажет на мою ошибку и даст объяснение и решениес этим? Спасибо!

public class Circle {

private Point center;

private int radius;

public static void main(String[] args) {
    Circle c1 = new Circle(new Point(1, 2), 3);
    Circle c2 = new Circle(4, 5, 6);
    Circle c3 = new Circle(1, 2, 8);
    Circle c4 = new Circle(12, 5, 2);
    System.out.println("C1: " + c1);
    System.out.println("C2: " + c2);
    System.out.println("C3: " + c3);
    System.out.println("C4: " + c4);
    System.out.println();
    if (c1.isConcentricWith(c2)) {
        System.out.println("C1 and C2 are concentric");
    } else {
        System.out.println("C1 and C2 are not concentric");
    }
    if (c1.isConcentricWith(c3)) {
        System.out.println("C1 and C3 are concentric");
    } else {
        System.out.println("C1 and C3 are not concentric");
    }
}

public Circle(Point center, int radius) {
    this.center = center;
    this.radius = radius;
}


public Circle(int x_coordinates, int y_coordinates, int radius) {
    center = new Point(x_coordinates, y_coordinates);
    this.radius = radius;
}

public Point getCenter() {
    return center;
}

public int getRadius() {
    return radius;
}

public void setCenter(Point center) {
    this.center = center;
}

public void setRadius(int radius) {
    this.radius = radius;
}

public boolean isConcentricWith(Circle center) {
    return this.center == center;
}

public String toString(){
    return getCenter() +" with radius " + getRadius();
}

Обновление : isConcentricWith всегда будет возвращать ложь, когда я пишу это так:

public boolean isConcentricWith(Circle center) {
    return (equals(this.center));
}

1 Ответ

0 голосов
/ 27 октября 2019

Параметр с именем center является Circle;переменная экземпляра center (то есть this.center) представляет собой Point.

Два круга концентрически, если они имеют один и тот же центр;таким образом, вы хотите сравнить центр center с this.center. Если у вас возникли проблемы с этим , возможно, вы захотите взглянуть на вопрос, с которым @JoakimDanielson связан.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...