编写一个用于表示三角形的类Triangle,并编写自定义异常类TriangleException用来在构造Triangle对象时检测所输入的三边是否和合法的三角形三边,要求检测三边是否为非负数或0,检测是否存在两边之和小于第三边的情况,异常信息要求合理的显示错误信息。另构建一个包含main方法的Test类,用于接受用户键盘输入三条边的值,并创建Triangle对象,如果合法,输出三边的值及三角形的面积和周长,如不合法,合理使用TriangleException类,输出错误信息,并让用户再次输入新的三边值。
时间: 2024-03-26 15:36:02 浏览: 17
好的,这是一个Java编程的问题,我会尽力回答。首先,我们需要编写Triangle类和TriangleException类。Triangle类应该包含三个属性,即三角形的三条边a、b、c,以及计算三角形面积和周长的方法。代码如下:
```java
public class Triangle {
private double a;
private double b;
private double 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 || a + c <= b || b + c <= a) {
throw new TriangleException("三边长度不符合三角形构成规则!");
}
this.a = a;
this.b = b;
this.c = c;
}
public double getArea() {
double p = (a + b + c) / 2.0;
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
public double getPerimeter() {
return a + b + c;
}
}
```
TriangleException类是一个自定义异常类,用于处理Triangle构造函数中的异常情况。代码如下:
```java
public class TriangleException extends Exception {
public TriangleException(String message) {
super(message);
}
}
```
接下来,我们需要编写Test类,用于接收用户输入的三边长度,并创建Triangle对象。如果输入的三边长度不符合三角形构成规则,就需要捕获TriangleException异常,并提示用户重新输入。代码如下:
```java
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double a, b, c;
while (true) {
try {
System.out.print("请输入三角形的三条边:");
a = scanner.nextDouble();
b = scanner.nextDouble();
c = scanner.nextDouble();
Triangle triangle = new Triangle(a, b, c);
System.out.println("三角形的三边长分别为:" + a + "、" + b + "、" + c);
System.out.println("三角形的面积为:" + triangle.getArea());
System.out.println("三角形的周长为:" + triangle.getPerimeter());
break;
} catch (TriangleException e) {
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println("输入不合法,请重新输入!");
scanner.nextLine();
}
}
}
}
```
以上就是完整的代码。当用户输入的三边长度不符合要求时,程序会提示错误信息,并让用户重新输入。如果输入的三边长度符合要求,程序将会输出三边的值、三角形的面积和周长。