java题目:判断二维坐标系中2个圆的位置关系

内容要求:

按照面向对象方法,使用Java编写应用程序,实现如下功能:

提示用户输入2个圆的圆心坐标和各自的半径值,判断并输出这两个圆之前的位置关系。

两个圆之间的位置关系有如下三种:

两个圆包含时输出:圆 (x1, y1) - r1 包含 圆 (x2, y2) - r2
两个圆相交时输出:圆 (x1, y1) - r1 与 圆 (x2, y2) - r2 相交
两个圆无关时输出:圆 (x1, y1) - r1 与 圆 (x2, y2) - r2 无关

分析:判断两个圆位置的方法是:半径和小于两圆心距离时,两圆相离;半径差大于两圆心距离时,大圆包含小圆;其他情况相交。

相交包含三种情况(题目不作要求):半径和等于两圆心距离时,两圆外切;半径差等于两圆心距离时,两圆内切;其他情况有两个交点。

代码片段如下:

import java.util.Scanner;

public class Circle {//定义一个圆类
    double x;
    double y;
    double r;

    public void init(){//初始化一个圆的方法
        Scanner sc=new Scanner(System.in);
        double x=sc.nextDouble();
        double y=sc.nextDouble();
        double r=sc.nextDouble();
        this.x=x;
        this.y=y;
        this.r=r;
    }

    public void containOrNot(double x1,double y1,double r1,double x2,double y2,double r2){//比较两个圆位置距离的方法
        double dir_xy=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
        if(dir_xy>(r1+r2)*(r1+r2)){
            System.out.printf("(%.2f,%.2f)-%.2f与(%.2f,%.2f)-%.2f无关",x1,y1,r1,x2,y2,r2);
        }//无关
        else if(dir_xy<(r1-r2)*(r1-r2)){
            if(r1>r2)System.out.printf("(%.2f,%.2f)-%.2f包含(%.2f,%.2f)-%.2f",x1,y1,r1,x2,y2,r2);
            else System.out.printf("(%.2f,%.2f)-%.2f包含(%.2f,%.2f)-%.2f",x2,y2,r2,x1,y1,r1);
        }//包含
        else{
            System.out.printf("(%.2f,%.2f)-%.2f与(%.2f,%.2f)-%.2f相交",x1,y1,r1,x2,y2,r2);
        }//相交
    }
}
public class CircleTest {
     public static void main(String[] args) {
        Circle c1=new Circle();//定义第一个圆并初始化
        System.out.print("输入第一个圆 ");
        c1.init();
        Circle c2=new Circle();//定义第二个圆并初始化
         System.out.print("输入第二个圆 ");
        c2.init();
        c1.containOrNot(c1.x,c1.y,c1.r,c2.x,c2.y,c2.r);//调用比较圆位置的方法
     }
}
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值