m0_66051118 2022-06-01 22:04 采纳率: 76.3%
浏览 34
已结题

java语言的异常问题

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

求分析与设计思路

  • 写回答

1条回答 默认 最新

  • WaitIKnowYou 2022-06-01 22:29
    关注
    
    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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月8日
  • 已采纳回答 6月2日
  • 创建了问题 6月1日

悬赏问题

  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题