编写一个用于表示三角形的类Triangle,并编写自定义异常类TriangleException用来在构造Triangle对象时检测所输入的三边是否和合法的三角形三边,要求检测三边是否为非负数或0,检测是否存在两边之和小于第三边的情况,异常信息要求合理的显示错误信息。另构建一个包含main方法的Test类,用于接受用户键盘输入三条边的值,并创建Triangle对象,如果合法,输出三边的值及三角形的面积和周长,如不合法,合理使用TriangleException类,输出错误信息,并让用户再次输入新的三边值。
时间: 2024-03-24 07:40:25 浏览: 35
好的,我理解了你的问题。下面是 Triangle 和 TriangleException 类的代码实现:
Triangle.java
```java
public class Triangle {
private double a, b, c;
public Triangle(double a, double b, double c) throws TriangleException {
if (a <= 0 || b <= 0 || c <= 0) {
throw new TriangleException("三角形的边长必须为正数!");
}
if (a + b <= c || b + c <= a || c + a <= b) {
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));
}
}
```
TriangleException.java
```java
public class TriangleException extends Exception {
public TriangleException(String message) {
super(message);
}
}
```
Test.java
```java
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
try {
System.out.print("请输入三角形的三条边:");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double c = scanner.nextDouble();
Triangle triangle = new Triangle(a, b, c);
System.out.println("三边分别为:" + a + ", " + b + ", " + c);
System.out.println("周长为:" + triangle.getPerimeter());
System.out.println("面积为:" + triangle.getArea());
break;
} catch (TriangleException e) {
System.out.println("输入的边长不合法:" + e.getMessage());
} catch (Exception e) {
System.out.println("输入的边长格式不正确!");
scanner.nextLine();
}
}
}
}
```
在 Test 类中,我们使用了一个 while 循环,如果用户输入的三边不合法,就会抛出 TriangleException 异常,并输出错误信息。如果用户输入的边长不符合格式要求(比如输入了非数字字符),就会捕获到其他异常,输出错误信息,并让用户重新输入。如果用户输入的边长合法,就会创建 Triangle 对象,并输出三边的值、周长和面积。
希望这个代码能够帮助到你!
阅读全文