Java-异常:构造三角形

简介: Java-异常:构造三角形

编写 一程序 ,求三角形面积,要求不能构造三角的情形以自定义导常抛出

使用到海伦公式求三角形面积:

P = (a+b+c) / 2

S = sqrt[ P(P - a) (P - b) (P - c) ]

方法一

//自定义一个异常类
class TriangleException extends Exception {
    public TriangleException() {
    }
    public TriangleException(String message) {
        super(message);
    }
}
class TriangleArea {
    double a, b, c;
    double p, area;
    //构造方法
    public TriangleArea(double a, double b, double c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }
    //定义一个求面积的方法
    public void TArea() throws Exception {
        if ((a + b) > c && (a + c) > b && (b + c) > a) {
            p = (a + b + c) / 2;
            area = sqrt(p*(p-a)+p*(p-b)+p*(p-c));
            System.out.println("三角形面积是:"+area);
        }else{
            throw new TriangleException("输入三边的值不符合三角形的定义,不能构成三角形");
        }
    }
}
//测试类
public class TriangleDemo {
    public static void main(String[] args) {
        TriangleArea ta = new TriangleArea(1, 2, 3);
        try {
            ta.TArea();
        } catch (Exception e) {
            //自定义异常 抛出异常
            System.out.println("捕获的异常信息是:"+e.getMessage());
        }
    }
}

方法二

//自定义一个异常类
class TriangleArgumentException extends Exception {
    public TriangleArgumentException() {
    }
    public TriangleArgumentException(String message) {
        super(message);
    }
}
public class TriangleDemo {
    public static void main(String[] args) {
        double area, p;
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入三边的数据:");
        //输入下数据可能有错误 所以放在try里面
        try {
            int a = sc.nextInt();
            int b = sc.nextInt();
            int c = sc.nextInt();
            if ((a + b) > c && (a + c) > b && (b + c) > a) {
                p = (a + b + c) / 2;
                area = sqrt(p * (p - a) + p * (p - b) + p * (p - c));
                System.out.println("三角形面积是:" + area);
            } else {
                throw new TriangleArgumentException("输入三边的值不符合三角形的定义,不能构成三角形");
            }
        } catch (Exception e) {
            //System.out.println("输入的数据异常信息:"+e.toString()); //异常信息(是什么异常)
            System.out.println("输入的数据有错的原因:"+e.getMessage()); //异常原因
        }
    }
}


运行结果是

方法三

public class TriangleDemo {
    //测试类
    public static void main(String[] args) {
        //调用静态方法
        TriangleException();
    }
    //定义一个静态方法
    public static void TriangleException() {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入三边的数据:");
        double a = sc.nextDouble();
        double b = sc.nextDouble();
        double c = sc.nextDouble();
        //try catch  用类调用方法
        try {
            TriangleDemo.TriangleTest(a, b, c);
        } catch (Exception e) {
            System.out.println("不能构成三角形的原因:" + e.toString());
        } finally {
            System.out.println("结束");
        }
    }
    //定义一个在判断中会出现异常的方法  有参数列表
    public static void TriangleTest(double a, double b, double c) {
        double area, p;
        //边不能小于0
        if (a < 0 || b < 0 || c < 0) {
            throw new IllegalArgumentException("不能有小于0的边");
        } else {
            if ((a + b) > c && (a + c) > b && (b + c) > a) {
                //计算面积
                p = (a + b + c) / 2;
                area = sqrt(p * (p - a) + p * (p - b) + p * (p - c));
                System.out.println("三角形面积是:" + area);
            } else {
                //不符合定义就要抛出异常
                throw new IllegalArgumentException("输入三边的值不符合三角形的定义,不能构成三角形");
            }
        }
    }
}



运行结果:


目录
相关文章
|
2月前
|
Java 开发者 UED
【实战宝典】Java异常处理大师级教程:throws关键字,让异常声明成为你的专属标签!
【实战宝典】Java异常处理大师级教程:throws关键字,让异常声明成为你的专属标签!
48 3
|
1天前
|
安全 Java 数据安全/隐私保护
如何配置 Java 安全管理器来避免访问控制异常
配置Java安全管理器以防止访问控制异常,需在启动JVM时通过 `-Djava.security.manager` 参数启用,并设置安全策略文件,定义权限规则,限制代码执行操作,确保应用安全。
|
8天前
|
Java
让星星⭐月亮告诉你,Java异常分类[Throwable(Error/Exception(RuntimeException/其他异常)) 检查时异常 非检查时异常]
本文深入解析了Java异常处理机制,重点介绍了`Throwable`类及其子类`Error`和`Exception`,并通过实例代码、流程图和表格详细解释了异常的分类、区别及处理方法,帮助读者掌握异常处理的关键技巧,提升程序的稳定性和健壮性。
24 1
|
12天前
|
Java 程序员
关于java异常
关于java异常
18 5
|
13天前
|
Java 程序员 编译器
Java中的异常类型
Java中的异常类型
19 3
|
1月前
|
Java 编译器 数据库连接
Java——异常
在 Java 中,程序执行过程中的不正常行为被称为异常。异常分为 Error 和 Exception。Error 表示系统级错误,而 Exception 则封装程序可能出现的问题。异常包括编译时异常和运行时异常(如数组越界)。异常可用于查找 bug 信息和作为方法内部的特殊返回值。处理异常的方式有默认处理和捕获异常,后者通过 try-catch 结构实现。此外,还可以自定义异常类来更灵活地处理特定情况。
32 9
Java——异常
|
12天前
|
存储 Java 编译器
【一步一步了解Java系列】:认识异常类
【一步一步了解Java系列】:认识异常类
19 2
|
16天前
|
Java 程序员 编译器
Java中的异常类型
Java中的异常类型
16 3
|
17天前
|
Java
Java异常捕捉处理和错误处理
Java异常捕捉处理和错误处理
17 1
|
1月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)