1. 程式人生 > >藍橋基礎練習之矩形面積交

藍橋基礎練習之矩形面積交

一:題目
描述
平面上有兩個矩形,它們的邊平行於直角座標系的X軸或Y軸。對於每個矩形,我們給出它的一對相對頂點的座標,請你程式設計算出兩個矩形的交的面積。
輸入
輸入僅包含兩行,每行描述一個矩形。
在每行中,給出矩形的一對相對頂點的座標,每個點的座標都用兩個絕對值不超過10^7的實數表示。
輸出
輸出僅包含一個實數,為交的面積,保留到小數後兩位。
樣例輸入
1 1 3 3
2 2 4 4
樣例輸出
1.00

二:分析
先假設兩個矩形會相交,那麼需要求出相交的兩個橫縱座標,分別是橫座標xleft、xright和縱座標ydown和yup,然後判斷,若xleft<xright且ydown<yup,兩矩形相交。
保留兩位小數可用DecimalFormat類。
在這裡插入圖片描述


0:指定位置不存在數字則顯示為0。
“#” 指定位置不存在數字則不顯示。
“.” 表示小數點。
“%” 結果以百分比格式顯示。
具體使用方法:DecimalFormat d = new DecimalFormat(String pattern); System.out.println(d.format(…));
三:程式碼

import java.text.DecimalFormat;
import java.util.Scanner;
public class Main {
	public static void main(String[] args){
		Scanner in = new Scanner(System.in);
		int x1 = in.nextInt();
		int y1 = in.nextInt();
		int x2 = in.nextInt();
		int y2 = in.nextInt();
		int x3 = in.nextInt();
		int y3 = in.nextInt();
		int x4 = in.nextInt();
		int y4 = in.nextInt();	
		int xl,yd,xr,yu;
		xl=Math.max(Math.min(x1, x2), Math.min(x3, x4));  //左交界橫座標
		yd=Math.max(Math.min(y1, y2), Math.min(y3, y4));  //下交界縱座標
		xr=Math.min(Math.max(x1, x2), Math.max(x3, x4));  //右交界橫座標
		yu=Math.min(Math.max(y1, y2), Math.max(y3, y4));  //上交界縱座標
		DecimalFormat d1 = new DecimalFormat("0.00");  //以0.00格式輸出
		if(!(xl<xr&&yd<yu))   
			System.out.println(d1.format(0.00));
		else   //若左交界在右交界左邊且下交界在上交接下邊,則矩形相交了
			System.out.println(d1.format((xr-xl)*(yu-yd)));	
	}	
}