Java实验-类和对象的使用

●基本要求: (1) 实现一个 Point 类,该类包含表示坐标的两个 int 型变量 x、y,构造方法 Point()和 Point(int x, int y),返回 x 值和 y 值的 int getX()和 int getY()方法,设置 x 值和 y 值 的 void setX(int x)和 void setY(int y)方法,计算两点间距离的 double distance(Point p)方法。其中计算平方根的方法是 Math.sqrt(),如:double d=Math.sqrt(2); (2) 实现一个 Circle 类,该类包含表示圆心的 Point 型变量 center,表示半径的 int 型 变量 radius,以及构造方法 Circle()、Circle(int x,int y,int r)、Circle(Point c,int r), 返回周长和面积的 double perimeter()、double area()方法,返回两个圆是否为同一 个圆(返回 0)、同心圆(返回 1)、相交的圆(返回 2)、分离的圆(返回 3)、包 含的圆(返回 4)等关系的 int relation(Circle c)等方法。π 值可以用 Math.PI 常量。 (3) 实现测试上述两个类的 Test 类。该类在 main 方法中分别创建若干个 Point 对象和 Circle 对象,并调用相关方法,输出方法的返回值,验证其正确性。(4) 根据 relation()方法的返回值,main 方法输出“同一圆”、“同心圆”等内容。

代码:

package chapter2;

public class Circle {
     private Point center;          //表示圆心
     private int radius;            //表示半径
    public Circle(){              //构造方法
        center =new Point(0,0);
        radius=0;
    }
    public Circle(int x,int y,int r){           //构造方法
        center =new Point(x,y);
        //radius为负数时,半径、面积和周长皆0
        radius = Math.max(r, 0);
    }
    public Circle(Point c,int r){
        if(c!=null){                   //Point为空对象时,半径、面积和周长皆0
            center =c;
        }
        else{
            center =new Point(0,0);
        }
        radius为负数时,半径、面积和周长皆0
        radius = Math.max(r, 0);
    }
    public int getRadius(){
        return radius;
    }
    public Point getCenter(){
        return center;
    }
    public void  setRadius(int radius){
        this.radius = Math.max(radius, 0);
    }
    public void setCenter(Point center){
        if(center.getX()<0){
            this.center.setX(0);
        }
        this.center.setY(center.getY());
        if(center.getY()<0){
            this.center.setY(0);
        }
        this.center.setX(center.getX());
    }
    public double perimeter(){
        return (radius*Math.PI*2);
    }
    public double area(){
        return (radius*Math.PI*radius);
    }
    public int relation(Circle c) {
        double d;
        d= center.distance(c.center);
        if(d==0&&radius==c.radius){
            return 0;                //同一个圆
        }
        else if(d == 0){
            return 1;                //同心圆
        }
        else if(d<(radius+c.radius)&&d>Math.abs(c.radius-radius)){
            return 2;                //相交的圆
        }
        else if(d>=(radius+c.radius)){
            return 3;                //分离的圆
        }
        else{
            return 4;                //包含的圆
        }
    }
}

package chapter2;
public class Point{
     private int x;
     private int y;
    public Point(){    //构造方法
        this(0,0);
    }
    public Point(int xx,int yy){
        this.x=xx;
        this.y=yy;
    }
    public int getX(){           //返回X的值
        return x;
    }

    public int getY(){          //返回Y的值
        return y;
    }
    public void setX(int x){    //设置X的值
        this.x=x;
    }
    public void setY(int y){    //设置Y的值
        this.y=y;
    }
    public double distance(Point p){         //计算两点间的距离
        return (Math.sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)));
    }
}

package chapter2;

public class Test {
    public static void main(String[] args){
        Point a=new Point();
        Point b=new Point(0,3);
        Point p=new Point(1,1);
        Circle c=new Circle(8,8,8);
        System.out.println("a点的坐标是:"+"("+a.getX()+","+a.getY()+")");
        System.out.println("b点的坐标是:"+"("+b.getX()+","+b.getY()+")");
        System.out.println("p点的坐标是:"+"("+p.getX()+","+p.getY()+")");
        System.out.println("ab两点的距离是:"+a.distance(b));
        Circle circle1=new Circle();
        System.out.println("圆1的周长应为:"+circle1.perimeter()+",圆1的面积应为:"+circle1.area()+"");
        Circle circle2=new Circle(1,1,10);
        //System.out.println("圆2的周长应为:"+circle2.perimeter()+",圆2的面积应为:"+circle2.area()+"");
        System.out.printf("圆2的周长应为:%.3f,圆2的面积应为:%.3f\n",circle2.perimeter(),circle2.area());
        Circle circle3=new Circle(1,1,-1);
        System.out.printf("圆3的圆心应为:(%d,%d),圆3的半径应为:%d,圆3的周长应为:%.3f,圆3的面积应为:%.3f\n",circle3.getCenter().getX(),circle3.getCenter().getY(),circle3.getRadius(),circle3.perimeter(),circle3.area());
        Circle circle4=new Circle(p,10);
        System.out.printf("圆4的圆心应为:(%d,%d),圆4的半径应为:%d,圆4的周长应为:%.3f,圆4的面积应为:%.3f\n",circle4.getCenter().getX(),circle4.getCenter().getY(),circle4.getRadius(),circle4.perimeter(),circle4.area());
        Circle circle5=new Circle(p,-1);
        System.out.printf("圆5的圆心应为:(%d,%d),圆5的半径应为:%d,圆5的周长应为:%.3f,圆5的面积应为:%.3f\n",circle5.getCenter().getX(),circle5.getCenter().getY(),circle5.getRadius(),circle5.perimeter(),circle5.area());
        Circle circle6=new Circle(null,10);
        System.out.printf("圆6的圆心应为:(%d,%d),圆6的半径应为:%d,圆6的周长应为:%.3f,圆6的面积应为:%.3f\n",circle6.getCenter().getX(),circle6.getCenter().getY(),circle6.getRadius(),circle6.perimeter(),circle6.area());
        p.setX(10);
        p.setY(10);
        System.out.println("p点的坐标被变更为:"+"("+p.getX()+","+p.getY()+")");
        System.out.printf("圆c的圆心是(%d,%d),半径是%d\n",c.getCenter().getX(),c.getCenter().getY(),c.getRadius());
        c.setRadius(20);
        System.out.printf("圆c的圆心是(%d,%d),半径是%d,半径被变更为%d\n",c.getCenter().getX(),c.getCenter().getY(),c.getRadius(),c.getRadius());
        c.setRadius(-20);
        System.out.printf("圆c的圆心是(%d,%d),半径是%d,圆的半径保持不变!\n",c.getCenter().getX(),c.getCenter().getY(),c.getRadius());
        c.setCenter(new Point(20,20));
        System.out.printf("圆c的圆心是(%d,%d),半径是%d,圆心被变更为(%d,%d)!\n",c.getCenter().getX(),c.getCenter().getY(),c.getRadius(),c.getCenter().getX(),c.getCenter().getY());
        System.out.printf("圆c的圆心变为(%d,%d)",c.getCenter().getX(),c.getCenter().getY());
        c.setCenter(null);
        System.out.printf("圆c的圆心是(%d,%d),半径是%d,圆c的圆心保持不变!\n",c.getCenter().getX(),c.getCenter().getY(),c.getRadius());
        Circle circle7=new Circle(0,0,0);
        if(circle1.relation(circle7)==0){
            System.out.println("circle1和circle7为同一个圆");
        }
        Circle circle10=new Circle(0,0,1);
        if(circle1.relation(circle10)==1){
            System.out.println("circle1和circle10为同心的圆");
        }
        Circle circle8=new Circle(0,0,10);
        Circle circle9=new Circle(1,1,5);
        if(circle8.relation(circle9)==4){
            System.out.println("circle8和circle9为包含的圆");
        }
        Circle circle11=new Circle(0,5,10);
        if(circle8.relation(circle11)==2){
            System.out.println("circle8和circle11为相交的圆");
        }
        Circle circle12=new Circle(0,20,10);
        if(circle8.relation(circle12)==3){
            System.out.println("circle8和circle12为分离的圆");
        }
    }
}
  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值