如何使用另一个类中的对象的特定变量?

时间:2019-01-29 07:11:50

标签: java class methods

我正在尝试修改toString方法。我有一个名为“ p”的对象,该对象具有2个双精度值属性,在本例中为5.0和6.0,分别是“ x”和“ y”值。

在字符串转换器“ ”内的括号应打印p的“ x”,p的“ y”,而在圆中应打印半径。确定可以打印半径,但是我不确定如何指定p的“ x”和p的“ y”。

班级圈子:

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 :(得分:1)

您说的是要在toString的{​​{1}}方法中打印“ p”的“ x”和“ p”的“ y”,但是Cirlce不知道关于toString的任何事情,因为p是在p方法中本地声明的。

main方法中,您创建了main并将其传递给p的第一个参数,然后将其分配给Circle。因此,centercenter存储相同的内容。您应该使用pcenter.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; 来表示“ bar of foo”。这是点表示法,似乎您对此并不熟悉。

答案 1 :(得分:0)

pmain方法的局部变量,因此变量p本身不能在您要使用的地方使用。

但是我有个好消息–您正在将Point实例作为Circle构造函数的参数传递,并将其存储在center字段中。

您可以将其引用为this.center或仅引用center。要引用指定的x实例的Point,请使用

this.center.x

答案 2 :(得分:0)

您可以按如下方式使用center.x和center.y:

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

或者您只将Point类的x和y变量设置为私有,并使用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 + ")>";