蓝桥杯 基础 矩形面积交

import java.util.Scanner;

public class RectangleArea {
	public static void main(String[] args) {
		Scanner inScanner = new Scanner(System.in);
		
		//四个数设为[Xmin,Hmin,Xmax,Hmax]
		double Xmin,Hmin,Xmax,Hmax,temp;
		//两个矩形
		double[] area1;
		double[] area2;
		//第一个矩形
		Xmin =inScanner.nextDouble();
		Hmin =inScanner.nextDouble();
		temp =inScanner.nextDouble();
		if(temp>=Xmin)
		{
			Xmax=temp;
		}else {
			Xmax=Xmin;
			Xmin=temp;
		}
		temp =inScanner.nextDouble();
		if(temp>=Hmin)
		{
			Hmax=temp;
		}else {
			Hmax=Hmin;
			Hmin=temp;
		}
		area1=new double[]{Xmin,Hmin,Xmax,Hmax};
		//第二个矩形
		Xmin =inScanner.nextDouble();
		Hmin =inScanner.nextDouble();
		temp =inScanner.nextDouble();
		if(temp>=Xmin)
		{
			Xmax=temp;
		}else {
			Xmax=Xmin;
			Xmin=temp;
		}
		temp =inScanner.nextDouble();
		if(temp>=Hmin)
		{
			Hmax=temp;
		}else {
			Hmax=Hmin;
			Hmin=temp;
		}
		area2=new double[]{Xmin,Hmin,Xmax,Hmax};
		//知道平行坐标轴中(x,y)等于(W,H)
		double[] area = new double[4];
		
		//交叉的面积是两个矩形的两低边的高的,两高边的低的。对于平行x,y轴的两个边同理
		area[0]=area1[0]>area2[0]?area1[0]:area2[0];
		area[1]=area1[1]>area2[1]?area1[1]:area2[1];
		area[2]=area1[2]<area2[2]?area1[2]:area2[2];
		area[3]=area1[3]<area2[3]?area1[3]:area2[3];
		// 有交叉矩形
		if(area[0]<area[2]&&area[1]<area[3])
		{
			System.out.println(String.format("%.2f", (area[3]-area[1])*(area[2]-area[0])));
		}else {
			System.out.println("0.00");
		}
		
	}

}

这个输入写法过程繁琐了
可以输入是不用管大小。使用方法的min()在用的时候得到
例如
area[0]=area1[0]>area2[0]?area1[0]:area2[0];
变为:
area[0]=max(min(area[0],area[3]),min(area2[0],area[3]));
可以更简洁和不用繁琐的输入的形式;
发布了15 篇原创文章 · 获赞 4 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览