矩形面积交JAVA详述

问题描述

    平面上有两个矩形,它们的边平行于直角座标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的座标,请你编程算出两个矩形的交的面积。
输入格式
    输入仅包含两行,每行描述一个矩形。
    在每行中,给出矩形的一对相对顶点的座标,每个点的座标都用两个绝对值不超过10^7的实数表示。
输出格式
    输出仅包含一个实数,为交的面积,保留到小数后两位。
样例输入
    1 1 3 3
    2 2 4 4
样例输出
    1.00
锦囊1
    判断。
锦囊2
    公共部分为两个矩形左边界较大值到右边界较小值,从下边界较大值到上边界较小值。
举个栗子😀:
在这里插入图片描述
根据上图有以下代码:

public class Main
{
	public static void main(String[] args)throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		double[][] arr = new double[2][4];
		
		String tag1[] = br.readLine().split(" ");
		String tag2[] = br.readLine().split(" ");
		
		/*将输入的矩阵添加进二维数组*/
		for(int b=0;b<4;b++)
		{
			arr[0][b] = Double.valueOf(tag1[b]);
		}
		for(int b=0;b<4;b++)
		{
			arr[1][b] = Double.valueOf(tag2[b]);
		}
		
		double a,b,c,d,e,f,g,h;
		a = Math.max(arr[0][0],arr[0][2]);//得到矩形A右边界x值
		b = Math.min(arr[0][0],arr[0][2]);//得到矩形A左边界x值
		c = Math.max(arr[0][1],arr[0][3]);//得到矩形A上边界y值
		d = Math.min(arr[0][1],arr[0][3]);//得到矩形A下边界y值
		e = Math.max(arr[1][0],arr[1][2]);//得到矩形B右边界x值
		f = Math.min(arr[1][0],arr[1][2]);//得到矩形B左边界x值
		g = Math.max(arr[1][1],arr[1][3]);//得到矩形B上边界y值
		h = Math.min(arr[1][1],arr[1][3]);//得到矩形B下边界y值
		
		/*判断两个矩形是否相交*/
		if(a<f || e<b || c<h || g<d)
		{
			System.out.println("0.00");//不相交,则重叠面积为0
		}
		else
		{
			double i = (Math.min(a,e)-Math.max(b,f));//得到重叠矩形的长
			double j = (Math.min(c,g)-Math.max(d,h));//得到重叠矩形的宽
			String s = String.format("%.2f",i*j);//计算面积
			System.out.println(s);
		}
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章