02.判断同一平面内两圆的位置情况

编程题目:

2.编写代码判断同一平面内两圆的位置情况,其中:第一个圆圆心坐标为(x1,y1),半径是r1,第二个圆圆心坐标为(x2,y2),半径是r2。

示例代码:

package program.calculation.exercise02;

import java.util.Scanner;

/**
 * 2.编写代码判断同一平面内两圆的位置情况,
 * 其中:第一个圆圆心坐标为(x1,y1),半径是r1,第二个圆圆心坐标为(x2,y2),半径是r2。
 */

public class JudgeLocation {
	public static void main(String[] args) {  
        
		@SuppressWarnings("resource")
		Scanner scan = new Scanner(System.in);    
        System.out.print("请输入第一个圆的x坐标:");  
        int x1 = scan.nextInt();  
        System.out.print("请输入第一个圆的y坐标:");  
        int y1 = scan.nextInt();  
        System.out.print("请输入第一个圆的半径r:");  
        int r1 = scan.nextInt();  
        System.out.print("请输入第二个圆的x坐标:");  
        int x2 = scan.nextInt();  
        System.out.print("请输入第二个圆的y坐标:");  
        int y2 = scan.nextInt();  
        System.out.print("请输入第二个圆的半径r:");  
        int r2 = scan.nextInt(); 
        
        //判断两圆位置情况
        judgeLocation(x1,y1,r1,x2,y2,r2);
        
    }

	//判断两圆位置情况
	private static void judgeLocation (int x1, int y1, int r1, int x2, int y2, int r2) {
		
		//第一种方式
		//Math.pow(x,y)方法可返回 x的 y次幂的值,相当于(r1-r2)的平方,即最小圆心距的平方
		int rMin = (int) Math.pow(r1-r2,2);  
        int rMax = (int) Math.pow(r1+r2,2);  //最大圆心距的平方
        int dis = (int)(Math.pow(x1-x2,2) + Math.pow(y1-y2, 2)); //两圆心距离的平方
        
        //第二种方式
        //int rmin = r1-r2;
        //int rmax = r1+r2;
        //int dis = (int) Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
        
        if(rMin > dis && r2 < r1){  
            System.out.println("第二个圆在第一个圆内!");  
        }else if(rMin > dis && r1 < r2){  
            System.out.println("第一个圆在第二个圆内!");  
        }else if(rMin == dis){  
            System.out.println("两圆内切!");  
        }else if(dis > rMin && dis < rMax){  
            System.out.println("两圆相交!");  
        }else if(dis == rMax){  
            System.out.println("两圆外切!");  
        }else if(dis > rMax){  
            System.out.println("两圆相离!");  
        }  
		
	}   
}

结果显示:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值