我正在尝试修改toString方法。我有一个名为“ p”的对象,该对象具有2个双精度值属性,在本例中为5.0和6.0,分别是“ x”和“ 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;
}
}
答案 0 :(得分:1)
您说的是要在toString
的{{1}}方法中打印“ p”的“ x”和“ p”的“ y”,但是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;
来表示“ bar of foo”。这是点表示法,似乎您对此并不熟悉。
答案 1 :(得分:0)
p
是main
方法的局部变量,因此变量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 + ")>";