Taza azul del puente del Grupo B @java ejercicios de formación básica (30) BASIC-018: área transversal rectangular, palabra clave: la línea de pago, se determina

ejercicios Taza azul Puente Grupo B @java básicos de formación (30) BASIC-018: área transversal rectangular

palabras clave: se determina el segmento de línea AC

Descripción del problema

Con dos plano rectangular, sus bordes paralelos al eje X o eje Y del sistema de coordenadas rectangular. Para cada rectángulo, le damos las coordenadas de un par de vértices opuestos, se calcula el área de la programación de dos rectángulos de correos.
Formato de entrada
  de entrada que contiene sólo dos líneas, con cada línea que describe un rectángulo.
  En cada fila, se dan vértices opuestos de un par de coordenadas rectangulares, con los coordenadas de cada punto son dos valor absoluto real no es más de 10 ^ 7 FIG.
Formato de salida
  de salida incluye sólo un número real, es la zona de la entrada, conservado con dos decimales.
entrada de la muestra
. 1. 1. 3. 3
2 2. 4. 4
Salida de muestra
1,00

código:

public class BASIC018判断¥线段交 {
	public static void main(String[] args) {
		java.util.Scanner s=new java.util.Scanner(System.in);//录入四个点的坐标值
		double x1=s.nextDouble();double y1=s.nextDouble();
		double x2=s.nextDouble();double y2=s.nextDouble();
		double x3=s.nextDouble();double y3=s.nextDouble();
		double x4=s.nextDouble();double y4=s.nextDouble();
		s.close();
		
		//分别把两个矩形的坐标点中的最大值和最小值单独取出来(为判断两矩形的位置关系做备)
		
		//第一个矩形中给定的两个点中的x坐标中的最大和最小
		double maxx1=Math.max(x1, x2),minx1=Math.min(x1, x2);
		//第一个矩形中给定的两个点中的y坐标中的最大和最小
		double maxy1=Math.max(y1, y2),miny1=Math.min(y1, y2);
		
		//第二个矩形中给定的两个点中的x坐标中的最大和最小
		double maxx2=Math.max(x3, x4),minx2=Math.min(x3, x4);
		//第二个矩形中给定的两个点中的y坐标中的最大和最小
		double maxy2=Math.max(y3, y4),miny2=Math.min(y3, y4);
		
		//通过判断两个矩形的位置关系来选择不同的结果(或计算方式);
		if(maxx1<=minx2||maxy1<=miny2||minx1>=maxx2||miny1>=maxy2){
			System.out.println("0.00");	//当两个矩形不想交的时候,就没有相交图形产生
		}else{//若相交,求出所成矩形的两条边长再相乘就是结果
			double a1=Math.max(minx1,minx2),b1=Math.max(miny1,miny2);
			double a2=Math.min(maxx1, maxx2),b2=Math.min(maxy1, maxy2);
			System.out.println(String.format("%.2f",(Math.abs(a1-a2)*Math.abs(b1-b2))));
		}
	}
}

Publicado 29 artículos originales · ganado elogios 1 · vistas 1084

Supongo que te gusta

Origin blog.csdn.net/DAurora/article/details/105313905
Recomendado
Clasificación