计算三角形面积——海伦公式

海伦公式简介

海伦公式又译作希伦公式、海龙公式、希罗公式、海伦-秦九韶公式。它是利用三角形的三条边的边长直接求三角形面积的公式。表达式为:S=√p(p-a)(p-b)(p-c),它的特点是形式漂亮,便于记忆。
相传这个公式最早是由古希腊数学家阿基米德得出的,而因为这个公式最早出现在海伦的著作《测地术》中,所以被称为海伦公式。中国秦九韶也得出了类似的公式,称三斜求积术。

参考实现

/**
 * 使用海伦公式求解三角形面积
 */
public class TriangleArea {
    public static void main(String[] args) {
        System.out.println("请输入三个整数作为三角形的三条边(非整数直接退出):");
        Scanner sc = new Scanner(System.in);

        while (true) {
            try {
                int a = sc.nextInt();
                int b = sc.nextInt();
                int c = sc.nextInt();
                //检验边长
                if (checkTriangle(a, b, c)) {
                    //计算三角形面积
                    triangleAreaHeron(a, b, c);
                } else {
                    System.out.println("输入的三个数字无法组成一个三角形,你小学数学是体育老师教的嘛!!!");
                    //一次不满足三角形规则重新输入
                    continue;
                }

            } catch (InputMismatchException e) {
                //非法输入不干了,直接退出
                System.out.println("输入非法,退出程序!!!");
                break;
            }

        }
    }

    /**
     * 计算三角形面积:海伦公式法
     *
     * @param a 边1
     * @param b 边2
     * @param c 边3
     */
    public static void triangleAreaHeron(int a, int b, int c) {
        double p = (a + b + c) / 2;
        p = p * (p - a) * (p - b) * (p - c);
        double area = java.lang.Math.sqrt(p);
        System.out.println("由边长为 " + a + " " + b + " " + c + "组成三角形的面积是 " + area);
    }

    /**
     * 校验三条边长是否可以组合成一个三角形
     *
     * @param a 边1
     * @param b 边2
     * @param c 边3
     * @return
     */
    public static boolean checkTriangle(int a, int b, int c) {
        //三角形的任意两条边长的和大于另外一个边边长
        return (a + b > c) && (a + c > b) && b + c > a;
    }
  /*  public static boolean checkTriangle(int a, int b, int c) {
        //三角形的任意两条边长的和大于另外一个边边长
        return (a + b > c) && (a + c > b) && b + c > a ? true : false;
    }*/

/*    public static boolean checkTriangle(int a, int b, int c) {
        //三角形的任意两条边长的和大于另外一个边边长
        if ((a + b > c) && (a + c > b) && b + c > a) {
            return true;
        }

        return false;

    }*/
}

运行效果

请输入三个整数作为三角形的三条边:
2
1
3
输入的三个数字无法组成一个三角形,你小学数学是体育老师教的嘛!!!
3
4
5
由边长为 3 4 5面积是 6.0
0
0
0
输入的三个数字无法组成一个三角形,你小学数学是体育老师教的嘛!!!
q
输入非法,退出程序!!!

 

posted @ 2022-08-28 16:45  晓枫的春天  阅读(2661)  评论(0编辑  收藏  举报