蓝桥杯 基础 矩形面积交

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]));
可以更简洁和不用繁琐的输入的形式;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值