博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从求解三角形面积的海伦公式说起
阅读量:5052 次
发布时间:2019-06-12

本文共 3751 字,大约阅读时间需要 12 分钟。

求解三角形面积有很多的方法,海伦公式是常见的求面积公式,下面从一道Java编程题说起:

0.海伦公式背景介绍:

       

        

             

             

 

1.海伦公式求解三角形面积

1 package com.neusoft.chapter2.exercise; 2  3 import java.util.Scanner; 4  5 /** 6  * @author zhao-chj 7  * 海伦公式求解三角形面积 8  * 1.用户输入三角形的三个点A(x1,y1),B(x2,y2),C(x3,y3) 9  * 2.求解三角形的三条边10  * distance(A,B)=sqrt(pow((x2-x1),2)+pow((y2-y1),2)  边111  * distance(A,C)=sqrt(pow((x2-x3),2)+pow((y2-y3),2)  边212  * distance(B,C)=sqrt(pow((x2-x3),2)+pow((y2-y3),2)  边313  * 2.根据海伦公式得到三角形的面积14  *   s=(边1+边2+边3)/215  *   Area=sqrt(s(s-边1)(s-边2)(s-边3))16  * 4.输出三角形的面积17  */18 public class Exercise19 {19     public static void main(String[] args) {20         System.out.println("****请您输入三角形的三点坐标****");21         Scanner sc = new Scanner(System.in);22         System.out.println("输入A点坐标(x1,y1)");23         double x1 = sc.nextDouble();24         double y1 = sc.nextDouble();25         System.out.println("输入B点坐标(x2,y2)");26         double x2 = sc.nextDouble();27         double y2 = sc.nextDouble();28         System.out.println("输入C点坐标(x3,y3)");29         double x3 = sc.nextDouble();30         double y3 = sc.nextDouble();31         //1.计算边长32         //distance(A,B)=sqrt(pow((x2-x1),2)+pow((y2-y1),2)  边133         double side1AB=Math.sqrt(Math.pow((x2-x1),2)+Math.pow((y2-y1),2));34         //计算第二个 边的 边长35         double side2AC=Math.pow((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1),0.5);36         //计算第三个 边的 边长37         double side2BC=Math.pow((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2),0.5);38         //2.海伦公式39         double s= (side1AB+side2AC+side2BC)/2;40         double Area=Math.pow(s*(s-side1AB)*(s-side2AC)*(s-side2BC), 0.5);41         //3.输出三角形的面积公式42         System.out.println("用海伦公式得到三角形的面积为:"+Area);43         44     }45 }

2.抽象其中求解三角形边长的方法和求解面积的方法重新实现海伦公式求解

1 package com.neusoft.chapter2.exercise; 2 import java.util.Scanner; 3 /** 4  * @author zhao-chj 5  * 海伦公式求解三角形面积 6  * 1.用户输入三角形的三个点A(x1,y1),B(x2,y2),C(x3,y3) 7  * 2.求解三角形的三条边 8  * distance(A,B)=sqrt(pow((x2-x1),2)+pow((y2-y1),2)  边1 9  * distance(A,C)=sqrt(pow((x2-x3),2)+pow((y2-y3),2)  边210  * distance(B,C)=sqrt(pow((x2-x3),2)+pow((y2-y3),2)  边311  * 2.根据海伦公式得到三角形的面积12  *   s=(边1+边2+边3)/213  *   Area=sqrt(s(s-边1)(s-边2)(s-边3))14  * 4.输出三角形的面积15  */16 public class Exercise19_1 {17     public static void main(String[] args) {18         System.out.println("****请您输入三角形的三点坐标****");19         Scanner sc = new Scanner(System.in);20         System.out.println("输入A点坐标(x1,y1)");21         double x1 = sc.nextDouble();22         double y1 = sc.nextDouble();23         System.out.println("输入B点坐标(x2,y2)");24         double x2 = sc.nextDouble();25         double y2 = sc.nextDouble();26         System.out.println("输入C点坐标(x3,y3)");27         double x3 = sc.nextDouble();28         double y3 = sc.nextDouble();29         //1.计算边长30         //distance(A,B)=sqrt(pow((x2-x1),2)+pow((y2-y1),2)  边131         double side1AB=SloveSide(x1, x2, y1, y2);32         //2.计算第二个 边的 边长33         double side2AC=SloveSide(x1, x3, y1, y3);34         //3.计算第三个 边的 边长35         double side2BC=SloveSide(x2, x3, y2, y3);36         //4.调用求解面积的方法解决上述问题37         double Area= SloveArea(side1AB, side2AC, side2BC);38         System.out.println("用海伦公式得到三角形的面积为:"+Area);39     }40 41     private static double  SloveArea(double side1AB, double side2AC, double side2BC) {42         //2.海伦公式43         double s= (side1AB+side2AC+side2BC)/2;44         double Area=Math.pow(s*(s-side1AB)*(s-side2AC)*(s-side2BC), 0.5);45         //3.输出三角形的面积公式46         return Area;47     }48 49     private static double SloveSide(double x1,double x2,double y1,double y2) {50         // TODO 封装上述面积求解为一个方法51         double side=Math.sqrt(Math.pow((x2-x1),2)+Math.pow((y2-y1),2));52         return side;53     }54 }

3.程序运行及结果分析

      

 

转载于:https://www.cnblogs.com/jackchen-Net/p/6597604.html

你可能感兴趣的文章
Python网络爬虫(1)--url访问及参数设置
查看>>
[转]PT_DENY_ATTACH
查看>>
差分数组
查看>>
51nod1244 莫比乌斯函数之和
查看>>
Spring Boot 相关随笔
查看>>
WPF数据绑定Binding(二)
查看>>
UTC时间格式转换
查看>>
发展城市 BZOJ 3700
查看>>
Yii Framework处理网站前后台文件的方法
查看>>
Ajax 的onreadystatechange事件注意事项.
查看>>
2.redis.3.2 下载,安装、配置、使用 - 2
查看>>
jQuery事件委托
查看>>
移动端元素拖拽事件
查看>>
HDOJ:1058
查看>>
swiper隐藏再显示出现点击不了情况
查看>>
js input radio点击事件
查看>>
okhttp post form表单
查看>>
STL中map的简单使用简介【转】
查看>>
【LOJ】#2057. 「TJOI / HEOI2016」游戏
查看>>
VC++编译说明
查看>>