矩形面積交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);
		}
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章