日期:2014-05-20  浏览次数:20714 次

java Circle类的问题
//实现一个Circle类,该类包含表示圆心的Point型变量center,
//表示半径的int radius变量,以及构造方法Circle()、Circle(int xx,int yy,int r)、Circle(Point c,int r),
//返回周长和面积的int perimeter()、double area()方法,
//返回两个圆是否为同一个圆(返回0)、同心圆(返回1)、相交的圆(返回2)、分离的圆(返回3)、
//包含的圆(返回4)等关系的int relation(Circle c)等方法。PI值可以用Math.PI常量。
class Point{ //点类的定义
int x,y;
Point(){
x=0;y=0; //Point类中的构造函数
}
Point(int xx,int yy){
this.x=xx; //this不加也可运行
this.y=yy;
}

  int getX(){ //后面用到了
  return x;
  }
  int getY(){
  return y;
  }
  double distance(Point p){ //对象小写,类大写
  return Math.sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)); //用来求两点之间距离
  }

}
class Circle{ //圆类的定义
  int radius=0;
  //int x,y; //Point类型 圆心跟着Point走 不用再次定义x,y
Point center; //定义点类的圆心
Circle(){
radius=1; //圆类的构造函数
center=new Point(); //申请空间
}
Circle(int xx,int yy,int r){
radius=r;
center=new Point(xx,yy); //因为没有定义Circle中的x,y;所以直接引用Point的构造函数即可
}
Circle(Point c,int r){
radius=r;
center=c;
}
double perimeter()
{
return 2*3.14*radius; //以刚开始声明的radius为准
}
double area()
{
return 3.14*radius*radius;
}
int relation(Circle c)
{
int cx = c.center.getX(); //得到圆的圆心的横坐标
  int cy = c.center.getY();
  int cr = c.radius;
  int tx = this.center.getX();
  int ty = this.center.getY();
  Point myPoint=new Point(); //只创建对象,无需赋值,给了数也没有用
  Point point1=new Point();
  double distance1 = myPoint.distance(point1); //定义圆心距,圆心与圆心之间的距离,的通过对象调用distance;
  //对象是类的实体,只有通过对象才能调用类
  if(cx == tx && cy == ty && cr == radius) {
  return 0; //同一个圆
  } else if(cx ==tx && cy==ty) {
  return 1; //同心圆
  } else if(distance1 ==(cr+radius)) {
  return 2; //相交的圆
  } else if(distance1 > (cr+radius)) {
  return 3; //分离的圆
  } else if(distance1 < (cr+radius)) {
  return 4; //包含的圆
  }
  else
  return 5;
}
}
class Sun{
public static void main(String[] args){
double a,b,flag;
Circle circle1=new Circle(12,12,4); //用来预备着求圆的位置关系的
Circle circle2=new Circle(3,12,5);
a=circle1.perimeter(); //上面改成无参的了
b=circle1.area();
flag=circle1.relation(circle2);
if(flag==0)
System.out.println("两个圆的关系是:两个圆为同一个圆");
if(flag==1)
System.out.println("两个圆的关系是:两个圆为同心圆");
if(flag==2)
System.out.println("两个圆的关系是:两个圆为相交的圆");
if(flag==3)
System.out.println("两个圆的关系是:两个圆为分离的圆");
if(flag==4)
System.out.println("两个圆的关系是:两个圆为包含的圆");
if(flag==5)
System.out.println("两个圆的关系是:两个圆不是特有的关系");
System.out.println("圆的周长是:"+a);
System.out.println("圆的面积是:"+b);
}

}
好像distance函数始终无法调用,就是只是输出包含关系,不输出相交和分离,求高手指点!

------解决方案--------------------
你其他地方的代码也有问题,下面是我改了的,有5种基本关系,对于同心圆和相等的这种情况我没有处理,你可以考虑添加