class Point {
private double x;
private double y;
Point(double x1, double y1) {
x = x1;
y = y1;
}
public double getX() {
return x;
}
public double getY() {
return y;
}
public void setX(double i) {
x = i;
}
public void setY(double i) {
y = i;
}
}
class Circle {
private Point o;
private double radius;
Circle(Point p, double r) {
o = p;
radius = r;
}
Circle(double r) {
o = new Point(0.0, 0.0);
radius = r;
}
boolean contains(Point p) {
double x = p.getX() - o.getX();
double y = p.getY() - o.getY();
if (x * x + y * y > radius * radius)
return false;
else
return true;
}
public void setO(double x, double y) {
o.setX(x);
o.setY(y);
}
public Point getO() {
return o;
}
public double getRadius() {
return radius;
}
public void setRadius(double r) {
radius = r;
}
public double area() {
return 3.14 * radius * radius;
}
}
public class TestCircle {
public static void main(String args[]) {
Circle c1 = new Circle(new Point(1.0, 2.0), 2.0);
Circle c2 = new Circle(5.0);
System.out.println("c1:(" + c1.getO().getX() + "," + c1.getO().getY()
+ ")," + c1.getRadius());
System.out.println("c2:(" + c2.getO().getX() + "," + c2.getO().getY()
+ ")," + c2.getRadius());
System.out.println("c1 area = " + c1.area());
System.out.println("c2 area = " + c2.area());
c1.setO(5,6);
c2.setRadius(9.0);
System.out.println("c1:(" + c1.getO().getX() + "," + c2.getO().getY()
+ ")," + c1.getRadius());
System.out.println("c2:(" + c2.getO().getX() + "," + c2.getO().getY()
+ ")," + c2.getRadius());
System.out.println("c1 area = " + c1.area());
System.out.println("c2 area = " + c2.area());
Point p1 = new Point(5.2, 6.3);
System.out.println(c1.contains(p1));
System.out.println(c1.contains(new Point(10.0, 9.0)));
}
}
结果为c1:(1.0,2.0),2.0
c2:(0.0,0.0),5.0
c1 area = 12.56
c2 area = 78.5
c1:(5.0,0.0),2.0//此行的预期结果为c1:(5.0,6.0),2.0,不知错出在哪里,哪位高手帮我解答
c2:(0.0,0.0),9.0
c1 area = 12.56
c2 area = 254.34
true
false
------解决方案--------------------
楼主你的代码写错了吧,System.out.println("c1:(" + c1.getO().getX() + "," + c2.getO().getY()
+ ")," + c1.getRadius());
第二个应该是c1.get吧,你写的是c2
------解决方案--------------------
楼主,你自己敲错了一行代码,大约在90-100行左右
也就是你很诧异的那个输出结果的那个println一行
- Java code
System.out.println("c1:(" + c1.getO().getX() + "," + c2.getO().getY() + ")," + c1.getRadius());