蓝桥杯-矩形面积交

问题描述
  平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。
输入格式
  输入仅包含两行,每行描述一个矩形。
  在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。
输出格式
  输出仅包含一个实数,为交的面积,保留到小数后两位。
样例输入
1 1 3 3
2 2 4 4
样例输出
1.00

重叠部分中,构成阴影的四个坐标和外面的两个矩形有关,可以通过确定一对坐标来确定矩形的宽和长。

import java.util.*;
public class Main {
	public static void main(String [] args){
		Scanner in=new Scanner(System.in);
		double x1,y1,x2,y2;    //矩形1
	    double x3,y3,x4,y4;    //矩形2
	    double m1,n1;        //交集左下角坐标.
	    double m2,n2;        //交集右上角坐标.
	    x1=in.nextDouble();
	    y1=in.nextDouble();
	    x2=in.nextDouble();
	    y2=in.nextDouble();
	    x3=in.nextDouble();
	    y3=in.nextDouble();
	    x4=in.nextDouble();
	    y4=in.nextDouble();
	    m1=Math.max(Math.min(x1,x2),Math.min(x3, x4));	//确定最左边的位置
	    n1=Math.max(Math.min(y1, y2),Math.min(y3,y4));	//确定最下面
	    m2=Math.min(Math.max(x1,x2), Math.max(x3,x4));	//确定最右面
	    n2=Math.min(Math.max(y1, y2),Math.max(y3, y4));	//确定最上面
	    if(m2>m1&&n2>n1) {
			System.out.printf("%.2f\n",(m2-m1)*(n2-n1));
		}
	    else {
	    	System.out.println("0.00");
	    }
	}

}

你可能感兴趣的:(蓝桥杯)