Как мне использовать определенную переменную объекта, который находится в другом классе? - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь изменить метод toString.У меня есть объект с именем 'p', который имеет 2 двойных атрибута, в данном случае 5.0 и 6.0, которые являются значениями 'x' и 'y' соответственно.

Скобки внутри конвертера строки "<Точка> ", должна печатать" x "из p," y "из p, в то время как в круге она должна печатать радиус.Конечно, печать с радиусом работает, но я не уверен, как мне указать «x» для p и «y» для p.

Class Circle:

package packageName;

public class Circle {

public Point center;
public double radius;

public Circle(Point a, double b) {
    this.center = a;
    this.radius = b;
}

    public String toString() {
        String converter = "<Circle(<Point(" + (x of p) + ", " + (y of p) + ")>, " + this.radius + ")>";
        return converter;
    }


    public static void main(String args []) {
        Point p = new Point(5.0, 6.0);
        Circle c = new Circle(p, 4.0);
        c.toString();
    }
}  

Классовая точка:

package packageName;
public class Point{


public double x;
public double y;

public Point(double x, double y) {
    this.x = x;
    this.y = y;
}

public String toString() {
    String input = "<Point(" + this.x + ", " + this.y + ")>";
    return input;

  }
}

Ответы [ 3 ]

0 голосов
/ 29 января 2019

p является локальной переменной для метода main, поэтому сама переменная p не может использоваться в том месте, где вы хотите ее использовать.

Но у меня есть хорошие новости - вы 'Вы передаете экземпляр Point в качестве аргумента конструктору Circle и сохраняете его в поле center.

Вы можете ссылаться на него как this.center или просто center.Для ссылки x на указанный экземпляр Point используйте

this.center.x
0 голосов
/ 29 января 2019

Вы можете использовать center.x и center.y следующим образом:

String converter = "<Circle(<Point(" + this.center.x + ", " + this.center.y + ")>, " + this.radius + ")>";

Или просто сделать переменные x и y класса Point частными и использовать метод getter следующим образом:

private double x;
private double y;

public double getX(){
    return this.x;
}
public double getY(){
    return this.y;
}

И использовать

String converter = "<Circle(<Point(" + this.center.getX() + ", " + this.center.getY() + ")>, " + this.radius + ")>"; 
0 голосов
/ 29 января 2019

Вы говорите, что хотите вывести «x» из «p» и «y» из «p» в toString методе Cirlce, но toString ничего не знает о p, потому чтоp объявляется локально в методе main.

В методе main вы создали p и передали его первому параметру Circle, который затем присваивается center.Так что center хранит то же самое, что и p.Вы должны использовать center.x и center.y:

String converter = "<Circle(<Point(" + center,x + ", " + center.y + ")>, " + this.radius + ")>";
return converter;

В качестве альтернативы, вы можете позвонить center.toString() напрямую:

String converter = "<Circle(" + c.toString() + ", " + this.radius + ")>";
return converter;

Обратите внимание, как я использовал синтаксис foo.bar для обозначения"Бар Foo".Это точечная запись, и кажется, что вы не знакомы с этим.

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