You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

28 lines
964 B

package com.shape;
public class Triangle extends Shape {
private double sideA;
private double sideB;
private double sideC;
public Triangle(double sideA, double sideB, double sideC) {
if (!isValidTriangle(sideA, sideB, sideC)) {
throw new IllegalArgumentException("输入的三边无法构成三角形(必须满足三角形不等式)");
}
this.sideA = sideA;
this.sideB = sideB;
this.sideC = sideC;
}
// 判断是否能构成三角形(三角形不等式)
private boolean isValidTriangle(double a, double b, double c) {
return (a + b > c) && (a + c > b) && (b + c > a) && a > 0 && b > 0 && c > 0;
}
@Override
public double getArea() {
// 使用海伦公式计算三角形面积
double p = (sideA + sideB + sideC) / 2; // 半周长
return Math.sqrt(p * (p - sideA) * (p - sideB) * (p - sideC));
}
}