日期:2014-05-20 浏览次数:20926 次
class Point{ //点类的定义
private int x;
private int y;
public Point(){
x=0;
y=0;
}
@Override
public String toString() {
return "Point{" +
"x=" + x +
", y=" + y +
'}';
}
public Point(int xx,int yy){
this.x=xx; //this不加也可运行
this.y=yy;
}
public int getX(){ //后面用到了
return x;
}
public int getY(){
return y;
}
public double distance(Point p){ //对象小写,类大写
return Math.sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)); //用来求两点之间距离
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Point)) return false;
Point point = (Point) o;
if (x != point.x) return false;
if (y != point.y) return false;
return true;
}
@Override
public int hashCode() {
int result = x;
result = 31 * result + y;
return result;
}
}
class Circle{ //圆类的定义
private int radius=0;
//int x,y; //Point类型 圆心跟着Point走 不用再次定义x,y
private Point center; //定义点类的圆心
public Circle(){
radius=1; //圆类的构造函数
center=new Point(); //申请空间
}
@Override
public String toString() {
return "Circle{" +
"radius=" + radius +
", center=" + center +
'}';
}
public Circle(int xx,int yy,int r){
radius=r;
center=new Point(xx,yy); //因为没有定义Circle中的x,y;所以直接引用Point的构造函数即可
}
public Circle(Point c,int r){
radius=r;
center=c;
}
public double perimeter(){
return 2*3.14*radius; //以刚开始声明的radius为准
}
public double area(){
return 3.14*radius*radius;
}
public 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(tx,ty);
Point point1=new Point(cx,cy);
double distance1 = myPoint.distance(point1); //定义圆心距,圆心与圆心之间的距离,的通过对象调用distance;
//distance1圆心距
//第一个圆半径radius
//第二个圆半径cr
if(distance1 > (cr+radius)){
return 0;//相离
}else if(distance1 ==(cr+radius)){
return 1;//外切
}else if(distance1 < (cr+radius)&&distance1>Math.abs(cr-radius)){
return 2;//相交
}else if(distance1==Math.abs(cr-radius)){
return 3;//内切
}else if(distance1<Math.abs(cr-radius)){
return 4;//包含
}else{
return -1;
}
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Circle)) return false;
Circle circle = (Circle) o;
if (radius != circle.radius) return false;
if (!center.equals(circle.center)) return false;
return true;
}
@Override
public int hashCode() {
int result = radius;
result = 31 * result + center.hashCode();
return result;
}
}
public 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);
Circle circle3=new Circle(3,12,5);
System.out.println("cricel1:"+circle1);
System.out.println("circle1 equals(circle2) result:"+circle1.equals(circle2));
System.out.println("circle3 equals(circle2) result:"+circle3.equals(circle2));
// 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==-1)
// System.out.println("两个圆的关系是:未知");
// System.out.println("圆的周长是:"+a);
// System.out.println("圆的面积是:"+b);
}
}