java中的一个MyPoint方法

 

设计一个Circle类,其属性为原点(类型为类MyPoint)和半径,并为此类编写以下三个方法:

一、计算圆的面积的calArea()方法;

二、计算周长的calLength()方法;

三、boolean inCircle(MyPoint mp)方法,功能是测试作为参数的某个点是否在当前对象圆内(圆内,包括圆上返回true,在圆外返回false)。

程序:

class MyPoint{
  private int x,y;
  public void setX(int x){
   this.x=x;
  }
  public int getX(){
  return this.x;
  }
  public void setY(int y){
   this.y=y;
  }
  public int getY(){
  return this.y;
  }
  public String toString(){
   String str="("+this.x+","+this.y+")";
   return str;
  }
}
class Circle {
 private MyPoint myPoint=null;
 private double radius=0.0;
 public Circle(MyPoint myPoint,int radius){
 this.myPoint=myPoint;
 this.radius=radius;
 }
 public double calArea(){
  return Math.PI*radius*radius;
 }
 public double calLength(){
  return 2*Math.PI*radius;
 }
 public boolean inCircle(MyPoint mp){
  double a=Math.sqrt(Math.pow(mp.getX()-myPoint.getY(),2)+Math.pow(mp.getY()-myPoint.getY(),2));
 if(a>radius){
 return false;
 }
 return true;
 }
}

public class T14{
 public static void main(String args[]){
  MyPoint mp=new MyPoint();
  mp.setX(0);
  mp.setY(0);
  Circle c=new Circle(mp,5);
  double area=c.calArea();
  double length=c.calLength();
  MyPoint mp2=new MyPoint();
  mp2.setX(3);
  mp2.setY(3);
  boolean in=c.inCircle(mp2);
  System.out.println("area="+area+",length="+length+",inCircle="+in);
 
 }

}
测试结果:

实验内容: 一、定义一个名为Circle的,位于shape包。要求如下: (1) 该需要描述在二维坐标系的位置,心的横、纵坐标值均取整数;描述半径,取双精度型。 (2) 无参构造方法心坐标设为坐标点,半径设为1.0;有参构造方法需要根据参数值设置心坐标和半径值。 (3) 提供一个计算面积方法double getArea()。 (4) 提供一个判断当前对象与参数对象是否相交的方法(相交方式见下图): boolean isIntersected(Circle another) (5) 提供一个判断当前对象是否包含参数对象的方法(包含方式见下图): boolean contains(Circle another) (6) 提供一个判断当前对象与参数对象的大小关系的方法(判断依据是半径半径之差的绝对值小于0.0001认为相等;返回负数表示当前对象小,0表示相等,正数表示当前对象) int compareTo(Circle another) (7) 提供返回当前的字符串的方法,格式为:[Circle(x,y)-raduis] String toString() 二、定义一个包含main方法TestCircle,位于shape包。要求如下: (1) main方法调用以下方法。 (2) 编写静态方法createArray,生成位置和大小均随机的10个对象,置于数组。 (3) 编写静态方法sort对这10个对象进行升序排序,并输出。 (4) 编写静态方法computeArea计算这10个互不相交和包含的面积之和。 提交要求:打包为可以执行的JAR文档,其要包含源程序文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值