使用封装编写三角形类Triangle,其边长a、b、c及有参构造方法获得三个边长。有参方法showArea()显示三角形周长,自定义异常类TriangleException,当在测试类TriangleTest中输入的两边之和小于第三边时会抛出TriangleException异常
时间: 2024-02-13 17:05:55 浏览: 105
好的,我理解了你的要求。以下是Triangle类的代码实现:
```java
public class Triangle {
private double a, b, c;
public Triangle(double a, double b, double c) throws TriangleException {
if (a + b <= c || a + c <= b || b + c <= a) {
throw new TriangleException("输入的两边之和小于第三边!");
}
this.a = a;
this.b = b;
this.c = c;
}
public double getA() {
return a;
}
public double getB() {
return b;
}
public double getC() {
return c;
}
public double getPerimeter() {
return a + b + c;
}
public double getArea() {
double p = getPerimeter() / 2;
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
public void showArea() {
System.out.println("三角形的面积为:" + getArea());
}
}
```
Triangle类有三个私有属性a、b、c,分别表示三角形的三条边。构造方法中检查了输入的三边是否构成了一个三角形,如果不是则抛出自定义的TriangleException异常。Triangle类还提供了获取周长和面积的方法,以及显示三角形面积的方法showArea()。
下面是TriangleException类的代码实现:
```java
public class TriangleException extends Exception {
public TriangleException() {
super();
}
public TriangleException(String message) {
super(message);
}
}
```
TriangleException继承了Exception类,表示自定义的异常类。TriangleException类提供了两个构造方法,一个是无参构造方法,另一个是有参构造方法,用于抛出异常时显示异常信息。
最后,是TriangleTest类的代码实现:
```java
import java.util.Scanner;
public class TriangleTest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入三角形的三条边a、b、c:");
double a = input.nextDouble();
double b = input.nextDouble();
double c = input.nextDouble();
try {
Triangle triangle = new Triangle(a, b, c);
System.out.println("三角形的周长为:" + triangle.getPerimeter());
triangle.showArea();
} catch (TriangleException e) {
System.out.println("输入的两边之和小于第三边,无法构成三角形!");
System.out.println(e.getMessage());
}
}
}
```
TriangleTest类中先从控制台读取输入的三角形三边长度,然后尝试创建Triangle对象,如果创建成功,则输出三角形的周长和面积;如果创建失败,则捕获TriangleException异常并输出异常信息。这样就完成了Triangle类的封装。
阅读全文