自定义类Triangle,其中有成员 x,y,z,作为三边长,构造方法Triangle(a,b,c)分别给x,y,z赋值,方法求面积getArea和显示三角形信息(三个边长)showInfo,这2个方法中当三条边不能构成一个三角形时要抛出自定义异常类NotTriangleException,否则显示正确信息。在另外一个类中的主方法中构造一个Triangle对象(三边为命令行输入的三个整数),显示三角形信息和面积,要求捕获异常。
时间: 2024-03-25 19:37:25 浏览: 73
好的,我理解了你的要求。这里是一个可能符合你要求的实现:
```java
import java.util.Scanner;
class NotTriangleException extends Exception {
public NotTriangleException(String message) {
super(message);
}
}
class Triangle {
private double x, y, z;
public Triangle(double a, double b, double c) throws NotTriangleException {
if (a + b <= c || b + c <= a || c + a <= b) {
throw new NotTriangleException("This is not a valid triangle.");
}
this.x = a;
this.y = b;
this.z = c;
}
public double getArea() {
double p = (x + y + z) / 2;
return Math.sqrt(p * (p - x) * (p - y) * (p - z));
}
public void showInfo() {
System.out.printf("Triangle with sides %.2f, %.2f, and %.2f\n", x, y, z);
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("Enter side 1: ");
double a = scanner.nextDouble();
System.out.print("Enter side 2: ");
double b = scanner.nextDouble();
System.out.print("Enter side 3: ");
double c = scanner.nextDouble();
Triangle triangle = new Triangle(a, b, c);
triangle.showInfo();
System.out.printf("Area: %.2f\n", triangle.getArea());
} catch (NotTriangleException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
```
在这个实现中,我们定义了一个 `Triangle` 类来表示三角形。构造方法 `Triangle(a, b, c)` 会检查三条边长是否可以构成一个三角形,如果不行就抛出 `NotTriangleException`。`getArea()` 方法用海伦公式计算三角形的面积,`showInfo()` 方法用来显示三角形信息。
在 `Main` 类的 `main()` 方法中,我们通过命令行输入三条边长,然后尝试构造一个 `Triangle` 对象,如果抛出 `NotTriangleException`,就捕获并显示错误信息。否则,就显示三角形信息和面积。
阅读全文