编写一个完整的Java代码,判断是否构成三角形、等腰三角形、等边三角形、直角三角形
时间: 2024-09-29 22:07:29 浏览: 43
当然可以。首先,我们需要创建一个`Triangle`类,然后定义三个子类分别代表普通三角形、等腰三角形和等边三角形,以及一个`IsRightAngleTriangle`辅助类用于检查是否是直角三角形。以下是完整的Java代码示例:
```java
// Triangle 类作为基础类
class Triangle {
double a, b, c;
// 构造函数
Triangle(double sideA, double sideB, double sideC) {
this.a = sideA;
this.b = sideB;
this.c = sideC;
}
// 检查三条边是否能组成三角形
boolean isValid() {
return a + b > c && a + c > b && b + c > a;
}
}
// 等腰三角形类,继承自 Triangle
class IsoscelesTriangle extends Triangle {
// 如果两边相等则视为等腰三角形
boolean isIsosceles() {
return Math.abs(a - b) < 0.0001 || Math.abs(b - c) < 0.0001 || Math.abs(c - a) < 0.0001;
}
}
// 等边三角形类,继承自 Triangle
class EquilateralTriangle extends Triangle {
// 如果所有边都相等,则视为等边三角形
boolean isEquilateral() {
return a == b && b == c;
}
}
// 直角三角形辅助类
class RightAngleChecker {
static boolean isRightAngle(Triangle triangle) {
if (triangle instanceof EquilateralTriangle || triangle instanceof IsoscelesTriangle)
return false; // 等边或等腰三角形不可能是直角三角形
double[] sides = {triangle.a, triangle.b, triangle.c};
Arrays.sort(sides);
return Math.pow(sides[0], 2) + Math.pow(sides[1], 2) == Math.pow(sides[2], 2); // Pythagorean theorem check
}
}
public class Main {
public static void main(String[] args) {
Triangle t = new Triangle(3, 4, 5);
System.out.println("Is it a valid triangle? " + t.isValid());
if (t.isValid()) {
if (t instanceof IsoscelesTriangle) {
System.out.println("Is it an isosceles triangle? " + ((IsoscelesTriangle) t).isIsosceles());
} else if (t instanceof EquilateralTriangle) {
System.out.println("Is it an equilateral triangle? " + ((EquilateralTriangle) t).isEquilateral());
}
if (RightAngleChecker.isRightAngle(t)) {
System.out.println("Is it a right angle triangle? Yes");
} else {
System.out.println("Is it a right angle triangle? No");
}
}
}
}
```
这个程序会根据输入的三边长度判断三角形的类型,并检查是否是直角三角形。
阅读全文