判断点是否在圆上(java)
package zuoye;
class Point{
double x;
double y;
//设置点的x坐标
public void setX(double x){
this.x = x;
}
//设置点的y坐标
public void setY(double y){
this.y = y;
}
//获取点的x坐标
public double getX(){
System.out.println("设置点的的x坐标为:" + x);
return x;
}
//获取点的y坐标
public double getY(){
System.out.println("设置点的的y坐标为:" + y);
return y;
}
Point(double x,double y){
this.x = x;
this.y = y;
System.out.println("圆心为:(" + x + "," + y +")");
}
}
class Circle{
double radius;
Point o;
//求圆的面积
public double Area(){
System.out.println("该圆的面积= " + (Math.PI * radius * radius));
return Math.PI * radius * radius;
}
Circle(double radius){
this.radius = radius;
System.out.println("圆的半径 = " + radius);
o = new Point(0.0,0.0);
}
Circle(Point p,double radius){
this.radius = radius;
System.out.println("圆的半径 = " + radius);
o = p;
}
public void setO(double x,double y){
System.out.println("以下为通过setO()函数进行赋值:");
o.setX(x);
o.setY(y);
}
public void get0(){
o.getX();
o.getY();
}
//判断点是否在圆上
public Boolean judgePoint(double a, double b){
System.out.println("需判断的点为:(" + a + "," + b + ")");
double x = Math.abs(a - o.x); //需判断的点距离圆心x方向的距离
System.out.println("需判断的点距离圆心x方向的距离为: " + x);
double y = Math.abs(b - o.y); //需判断的点距离圆心y方向的距离
System.out.println("需判断的点距离圆心y方向的距离为: " + y);
if(x * x + y * y < radius * radius){ //此处的x为设置点和圆心的距离,y也是如此
System.out.println("点(" + x + "," + y + ")在圆的范围内(包括圆上和圆内)");
return true;
}else{
System.out.println("点(" + x + "," + y + ")点在圆外");
return false;
}
}
}
public class TestCircle{
public static void main(String[] args){
Point p = new Point(12, 5);
p.setX(5.56);
p.setY(12.15);
p.getX();
p.getY();
Circle c = new Circle(10);
c.judgePoint(11, 0);
c.setO(19.3, 10.102);
c.get0();
c.Area();
c.o.setX(58.1); //通过o调用Point类中的setX()函数
c.o.setY(2.1); //通过o调用Point类中的setY()函数
c.o.getX(); //通过o调用Point类中的getX()函数
c.o.getY(); //通过o调用Point类中的getY()函数
Circle c1 = new Circle(new Point(1.0, 0.0) , 15);
c1.judgePoint(2.6, 2.6);
}
}
对Point类中的方法进行测试的代码和截图如下:
对Circle类中的单参数构造方法以及其他方法进行测试代码和截图如下:
对Circle类中的双参数构造方法进行测试代码和截图如下: