习题:设计一个圆Circle类,包含圆心和半径两个数据成员。①编写合理的构造方法。

完整题干:

设计一个圆Circle类,包含圆心和半径两个数据成员。

①编写合理的构造方法。

②编写计算圆面积的方法getArea()。

③编写计算圆是否包含指定的点contains(Point),contains(int x,int y)。

个人答案:

(1)python版本

import math
class Circle:
    def __init__(self,location,r):     #定义圆心和半径
        self.location =location
        self.r=r
    def GetGirth(self):       #周长的计算
        return 2*3.14*self.r
    def GetArea(self):        #面积的计算
        return 3.14*self.r*self.r
myCircle=Circle((200,200),10)        #圆心为(200,200),半径为10
print("圆的周长=%0.2f"%(myCircle.GetGirth()))
print("圆的面积=%0.2f"%(myCircle.GetArea()))
(x,y)=eval(input("请你输入坐标:"))     #计算圆是否包含指定的点
s=x**2+y*y
if s<=100:   #设定的半径为10
print("该坐标在该半径的圆内")
else:
print("该坐标不在该半径的圆内")

 

习题:设计一个圆Circle类,包含圆心和半径两个数据成员。①编写合理的构造方法。_第1张图片

 (2)java版本

class Point { //定义Point类

    private double x;

    private double y;

    Point(double x1, double y1) { //构造方法point,接收两个双精度类型数据x1、y1

        x = x1;

        y = y1;

    }

    public double getX() { return x; } //公用方法getX return给x值

    public double getY() { return y; } //公用方法getY return给y值

    public void setX(double i) { x = i; } //公用方法setX 接收一个双精度i,赋值给x

    public void setY(double i) { y = i; } //公用方法setY 接收一个双精度i,赋值给y

}

 

public class Circle1 { //主类TestCircle

    public static void main(String args[]) { //主方法main

       //问题1.计算圆面积的方法

        Circle c1 = new Circle(new Point(1.0,2.0), 2.0); //新建一个Circle类型对象c1,圆心(1,2)和半径2

        Circle c2 = new Circle(5.0); //新建一个Circle类型对象c2,圆心(0,0)半径5

        System.out.println("c1:("+c1.getO().getX()+","

                +c1.getO().getY()+"),"+c1.getRadius()); //输出c1的初始信息

        System.out.println("c2:("+c2.getO().getX()

                +","+c2.getO().getY()+"),"+c2.getRadius());//输出c2的初始信息

        System.out.println("c1 area = "+c1.area());//c1和c2的面积

        System.out.println("c2 area = "+c2.area());

        //问题2.编写计算圆是否包含指定的点

        c1.setO(5,6);

        c2.setRadius(9.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());

        Point p1 = new Point(5.0, 6.0);//新建一个点P1,计算他是否在圆内

        System.out.println(c1.contains(p1));

        System.out.println(c2.contains(new Point(10.0,9.0)));



    }



}

 

class Circle { //定义Circle类

    private Point o; //定义Ponint类型对象o

    private double radius;

    Circle(Point p, double r) //构造方法Circle,接收一个Point类型p,双精度类型r

    {

        o = p; //Point类型赋值给o

        radius = r; //双精度类型r赋值给radius

    }



    Circle(double r) { //构造方法Circle的重载,接收一个双精度r

        o = new Point(0.0, 0.0); //给point类型对象o赋值,分配堆内存

        radius = r; //双精度类型r赋值给radius

    }

    boolean contains(Point p) { //布尔类型 contains,接收point类型p的值

        double x = p.getX() - o.getX(); //调用对象p的getX方法接收的值减对象o的getX方法接收的值

        double y = p.getY() - o.getY(); //调用对象p的getY方法接收的值减对象o的getY方法接收的值

        if(x*x + y*y > radius * radius) return false; //假如x的平方和y的平方的和小于radius的平方,返回false,否则为true;

        else return true;

    }

    public void setO(double x, double y) { //接收两个双精度值x、y

        o.setX(x); //x赋值给o对象setX方法

        o.setY(y); //y赋值给o对象setY方法

    }

    public Point getO() { return o; } //geto 方法,返回给o一个值

    public double getRadius() { return radius;} //getRadius方法,返回一个双精度radius

    public void setRadius(double r) { radius = r;} //tRadius方法,接收一个双精度r,赋值给radius

    public double area() { //area方法,返回3.14*radius*radius的值

        return 3.14 * radius * radius;

    }

}

习题:设计一个圆Circle类,包含圆心和半径两个数据成员。①编写合理的构造方法。_第2张图片

参考答案:

package chap4.excercise.Ex67;



public class Point {

	private int x;

	private int y;

 

	public Point(int x, int y){

		this.x = x;

		this.y = y;

	}

	

	/**

	 *重载的构造器 初始化对角线上的点

	 **/

	public Point(int x){

        this(x,x);//调用本类的两个整数类型参数的构造器

    }

	

	/**

	 *  计算当前点到原点的距离 

	 * */

	public double distance(){ //当前点就是this

		return Math.sqrt(this.x*this.x + this.y*this.y); 

	}

	/**

	 *计算当前点到另外一个坐标的距离

	 */

	public double distance(int x, int y){

		return Math.sqrt((this.x-x)*(this.x-x)+(this.y-y)*(this.y-y));

	}

	

	/** 

	 * 计算当前点到另外一点的距离 

	 * */

	public double distance(Point other){

		//重用本类的方法

		return this.distance(other.x, other.y);

	}



	public int getX() {

		return x;

	}



	public void setX(int x) {

		this.x = x;

	}



	public int getY() {

		return y;

	}



	public void setY(int y) {

		this.y = y;

	}

	

}





package chap4.excercise.Ex67;



public class Circle {

	private Point center;  //圆心

	private double r;  	//半径

	

	public Circle() {

		super();

		// TODO Auto-generated constructor stub

	}

	public Circle(Point center) {

		this.center = center;

	}

	public Circle(Point center, double r) {

		this(center);

		this.r = r;

	}

	

	public double getArea(){

		return Math.PI * r *r;

	}

	

	/**

	 * 判断指定的点是否在圆内

	 * @param Point  

	 */

	public boolean contains(Point p){

		if(center.distance(p)

 

你可能感兴趣的:(python,开发语言)