给定平面上三个点坐标(x1,y1) (x2,y2) (x3,x3)检验能否构成三角形
三角形两条任意边之和必须大于第三条边
输入格式:
输入六个[−100,100]范围内的数字(指浮点数),即三个点的坐标x
输出格式:
不能构成三角形则输出“Impossible”;
可以构成三角形则输出“L = 周长, A = 面积”,保留2位小数
输入样例1:
4 5 6 9 7 8
输出样例1:
L = 10.13, A = 3.00
输入样例2:
4 6 8 12 12 18
输出样例2:
Impossible
import java.util.Scanner;
public class Triangle {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double x1 = sc.nextDouble();
double y1 = sc.nextDouble();
double x2 = sc.nextDouble();
double y2 = sc.nextDouble();
double x3 = sc.nextDouble();
double y3 = sc.nextDouble();
double side1 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
double side2 = Math.sqrt(Math.pow(x3 - x2, 2) + Math.pow(y3 - y2, 2));
double side3 = Math.sqrt(Math.pow(x1 - x3, 2) + Math.pow(y1 - y3, 2));
if (side1 + side2 > side3 && side2 + side3 > side1 && side1 + side3 > side2) {
double perimeter = side1 + side2 + side3;
double s = perimeter / 2;
double area = Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));
System.out.printf("L = %.2f, A = %.2f\n", perimeter, area);
} else {
System.out.println("Impossible");
}
}
}
1. `s` 表示三角形的半周长(半周长的定义为三条边长之和的一半)。
2. `s = (side1 + side2 + side3) / 2` 计算得出三角形的半周长。
3. `(s - side1)`, `(s - side2)`, `(s - side3)` 分别表示半周长与每条边长之差。
4. `s * (s - side1) * (s - side2) * (s - side3)` 计算这三个差值的乘积与半周长的乘积。
5. `Math.sqrt()` 对上述乘积进行开平方,得到三角形的面积。
已知三角形的三条边长的情况下可以直接使用。
这样可以通过已知的边长而不必特别关心三角形的高与底边,