藍橋基礎練習之矩形面積交
阿新 • • 發佈:2019-01-04
一:題目
描述
平面上有兩個矩形,它們的邊平行於直角座標系的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))); } }