编写一个用于表示三角形的类Triangle,并编写自定义异常类TriangleException用来在构造Triangle对象时检测所输入的三边是否和合法的三角形三边,要求检测三边是否为非负数或0,检测是否存在两边之和小于第三边的情况,异常信息要求合理的显示错误信息。另构建一个包含main方法的Test类,用于接受用户键盘输入三条边的值,并创建Triangle对象,如果合法,输出三边的值及三角形的面积和周长,如不合法,合理使用TriangleException类,输出错误信息,并让用户再次输入新的三边值。
时间: 2023-06-08 20:08:13 浏览: 219
好的,我会为您解答这个问题。
以下是三角形类Triangle和自定义异常类TriangleException的代码实现:
public class Triangle {
private double side1;
private double side2;
private double side3;
public Triangle(double side1, double side2, double side3) throws TriangleException {
if (side1 <= 0 || side2 <= 0 || side3 <= 0) {
throw new TriangleException("Error: The length of sides must be positive numbers.");
}
if (side1 + side2 <= side3 || side2 + side3 <= side1 || side1 + side3 <= side2) {
throw new TriangleException("Error: The sum of any two sides must be greater than the third side.");
}
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
public double getPerimeter() {
return side1 + side2 + side3;
}
public double getArea() {
double p = getPerimeter() / 2;
return Math.sqrt(p * (p - side1) * (p - side2) * (p - side3));
}
}
public class TriangleException extends Exception {
public TriangleException(String message) {
super(message);
}
}
以下是包含main方法的Test类的代码实现:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double side1, side2, side3;
Triangle triangle = null;
boolean validInput = false;
while (!validInput) {
try {
System.out.print("Enter the length of side1: ");
side1 = input.nextDouble();
System.out.print("Enter the length of side2: ");
side2 = input.nextDouble();
System.out.print("Enter the length of side3: ");
side3 = input.nextDouble();
triangle = new Triangle(side1, side2, side3);
validInput = true;
} catch (TriangleException ex) {
System.out.println(ex.getMessage());
} catch (Exception ex) {
System.out.println("Error: Invalid input. Please enter three positive numbers!");
input.nextLine(); // clear the buffer
}
}
System.out.println("The sides of the triangle are: " + triangle.getSide1() + ", " + triangle.getSide2() + ", " + triangle.getSide3());
System.out.println("The perimeter of the triangle is: " + triangle.getPerimeter());
System.out.println("The area of the triangle is: " + triangle.getArea());
}
}
当用户输入三条边的值后,程序将会创建一个Triangle对象,如果输入的三边可以构成一个三角形,程序将输出三边的值、周长和面积,否则程序将会捕获异常并输出相应的错误信息,让用户重新输入。
相关推荐

















