java语言的异常问题

(三角形类)设计一个扩展自抽象类GeometricObject的新的Triangle类。实现Triangle类,并编写一个测试程序,提示用户输入三角形的三条边,一种颜色以及一个表明该三角形是否填充的布尔值。程序应该根据用户的输入,使用这些边以及颜色和是否填充的信息,创建一个Triangle对象。程序应该显示面积,周长,颜色以及真或者假来表明是否被填充。

求分析与设计思路


package homework04;
public abstract class GeometricObject {
    private String color = "white";
    private boolean filled;
    private java.util.Date dateCreated;

    protected GeometricObject() {
        dateCreated = new java.util.Date();
    }

    protected GeometricObject(String color, boolean filled) {
        dateCreated = new java.util.Date();
        this.color = color;
        this.filled = filled;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public boolean isFilled() {
        return filled;
    }

    public void setFilled(boolean filled) {
        this.filled = filled;
    }

    public java.util.Date getDateCreated() {
        return dateCreated;
    }

    public String toString() {
        return "created on " + dateCreated.toLocaleString() + "\ncolor: " + color + " and filled: " + filled;
    }

    public abstract double getArea();

    public abstract double getPerimeter();
}
package homework04;
/*
 * 三角形实体类继承几何图形类
 */
public class Triangle extends GeometricObject {
    private double side1 = 1.0;
    private double side2 = 1.0;
    private double side3 = 1.0;

    public Triangle() {
        super();
    }

    public Triangle(double side1, double side2, double side3) {
        super();
        // 如果边长为负 抛出自定义异常 打印("边长不能为负")
        if (side1 < 0 || side2 < 0 || side3 < 0)
            throw new SideIsNegativeException("边长不能为负");
        // 如果有任何两边之和不大于第三边 抛出自定义异常 打印"不能构成三角形"
        if (!((side1 + side2) > side3 && (side2 + side3) > side1 && (side1 + side3) > side2))
            throw new ProduceTriangleException("此三边无法构造三角形");
        this.side1 = side1;
        this.side2 = side2;
        this.side3 = side3;
    }

    public double getSide1() {
        return side1;
    }

    public double getSide2() {

        return side2;
    }

    public double getSide3() {
        return side3;
    }

    public double getPerimeter() {

        return side1 + side2 + side3;
    }

    // 计算面积
    public double getArea() {
        double p = (side1 + side2 + side3) / 2;

        // 利用海伦公式计算三角形面积
        return Math.sqrt(p * (p - side1) * (p - side2) * (p - side3));
    }

    @Override
    public String toString() {
        return super.toString() + "\nTriangle: side1 = " + side1 + " side2 = " + side2 + " side3 = " + side3;
    }

}

package homework04;

public class IllegalTriangleException extends IllegalArgumentException{

    
    private static final long serialVersionUID = 6951590110509697033L;

    public IllegalTriangleException(String s) {
        super(s);
        
    }
        
    
}

package homework04;
/*
 * 自定义异常 三边不满足构建三角形的条件
 */
public class ProduceTriangleException extends IllegalArgumentException{

    //序列化
    private static final long serialVersionUID = 1683443194340418835L;

    
    public ProduceTriangleException(String s) {
        super(s);
        // TODO Auto-generated constructor stub
    }
}
package homework04;
/*
 * 自定义异常 边长为负*
 */
public class SideIsNegativeException extends IllegalArgumentException{

    //序列化
    private static final long serialVersionUID = -6372928593269244107L;

    public SideIsNegativeException(String s) {
        super(s);
        // TODO Auto-generated constructor stub
    }

}

img