求一个圆的面积及判断一个点是否在圆内

class Point
{
    private double x;
    private double y;
    //double x;
    //double y;

    Point()
    {
        x = 0;
        y = 0;
    }
    Point(double _x,double _y)
    {
        x = _x;
        y = _y;
    }

    void setX(double _x)
    {
        x = _x;
    }
    void setY(double _y)
    {
        y = _y;
    }

    double getX()
    {
        return x;
    }
    double getY()
    {
        return y;
    }
}
class Circle
{
    private Point p;
    private double radius;

    Circle()
    {
        p = new Point(0.0,0.0);
        radius = 1.0;
    }
    Circle(Point _p)
    {
        p = _p;
    }
    Circle(double _radius)
    {
        radius = _radius;
    }
    Circle(Point _p,double _radius)
    {
        p = _p;
        radius = _radius;
    }

    void setPoint(Point _p)
    {
        p = _p;
    }
    void setPoint(double _x,double _y)
    {
        p.setX(_x);
        p.setY(_y);
    }
    void setRadius(double _radius)
    {
        radius = _radius;
    }

    Point getPoint()
    {
        return p;
    }
    double getRadius()
    {
        return radius;
    }
    //计算圆的面积
    double getArea()
    {
        return 3.14*radius*radius;
    }

    //判断一个点是否在圆内
    boolean inCircle(Point _p)//返回值为布尔类型的函数,一般函数名为第三人称单数,例如:contains
    {
        //double i = (_p.getX()-p.getX())*(_p.getX()-p.getX())-(_p.getY()-p.getY())*(_p.getY()-p.getY());//不好,太长了
        double x = (_p.getX()-p.getX())*(_p.getX()-p.getX());
        double y = (_p.getY()-p.getY())*(_p.getY()-p.getY());
        //double temp = x^x - y^y;
        /*
        TestCircle.java:95: 错误: 二元运算符 '^' 的操作数类型错误
                double temp = x^x - y^y;
                               ^
  第一个类型:  double
  第二个类型: double
1 个错误
        */
        double temp = x*x - y*y;
        /*if(i == radius*radius || i > radius*radius)
            return false;
        else
            return true;
            */
        if(temp > radius*radius)
            return false;
        else
            return true;
    }
}
public class TestCircle
{
    public static void main(String[] args)
    {
        /*
        需求:
        定义一个圆的类,
        属性:圆心,半径
        方法:计算圆的面积(假设PI为3.14)
        */
        Circle c = new Circle();
        System.out.println("半径为:"+c.getRadius());
        //System.out.println("圆心为:("+c.getPoint().x+","+c.getPoint().y+")");
        System.out.println("圆心为:("+c.getPoint().getX()+","+c.getPoint().getY()+")");
        /*
        TestCircle.java:94: 错误: x可以在Point中访问private
                System.out.println("圆心为:("+c.getPoint().x+","+c.getPoint().y+")");
        */
        System.out.println("面积为:"+c.getArea());

        Point p = new Point(1.0,2.0);
        Circle c1 = new Circle(p,10.0);
        System.out.println("半径为:"+c1.getRadius());
        System.out.println("圆心为:("+c1.getPoint().getX()+","+c1.getPoint().getY()+")");
        System.out.println("面积为:"+c1.getArea());
        Point p2 = new Point(3,4);
        System.out.println(c1.inCircle(p2));
    }
}
/*
小结:
1.circle--圆
radius--半径
2.private修饰的成员只可以在类体内部使用
可以通过类的成员方法访问成员变量的值
3.该程序的改进
圆的圆心的设定
原来方法:
void setPoint(Point _p)
{
    p = _p;
}
    
改进后的方法:
void setPoint(double _x,double _y)
{
    p.setX(_x);
    p.setY(_y);
}
两者可以共存,也就是函数的重载
4.分析内存的分配与释放过程
在纸上画出来
6.内存区域
1)data区--存放字符串常量等
2)代码区
3)栈区--存放局部变量
4)堆区--存放对象(引用类型的变量,也就是new出来的东西)
7.判断一个点是否在圆内
设l = 点到圆心的距离
r = 圆的半径
1)如果l < r,在圆内
2)如果l = r,在圆上
3)如果l > r,在圆外
在圆内与在圆上,统称为在圆内
8.double i = (_p.getX()-p.getX())*(_p.getX()-p.getX())-(_p.getY()-p.getY())*(_p.getY()-p.getY());//不好,太长了
变量的值早好不要太长,不利于阅读
碰见值比较长的情况,多定义几个变量就行了
9.如何定义函数
1)分析需求
2)确定函数名
3)确定返回值
4)确定返回值类型
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值