java中求三角形的面积可以通过海伦公式来求解,具体示例代码如下:
成都创新互联公司成立与2013年,是专业互联网技术服务公司,拥有项目成都网站设计、成都网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元永吉做网站,已为上家服务,为永吉各地企业和个人服务,联系电话:13518219792
public class Demo3 {
public static void main(String[] args) {
//三边长
float a = 3;
float b = 4;
float c = 5;
float s;//面积
s = (float)((1.0/4.0)*Math.sqrt((a+b+c)*(a+b-c)*(a+c-b)*(b+c-a)));
System.out.println(s);
}
}
海伦公式是利用三角形的三条边的边长直接求三角形面积的公式,公式为1/4*sqrt[(a+b+c)*(a+b-c)*(a+c-b)*(b+c-a)]。
import java.util.Scanner;
public class Heron {
public static void main(String[] args) {
Double a, b, c;
Scanner s = new Scanner(System.in);
System.out.println("输入三边长:");
try {
a = Double.parseDouble(s.nextLine());
b = Double.parseDouble(s.nextLine());
c = Double.parseDouble(s.nextLine());
} catch (Exception e) {
System.out.println("格式有误。");
s.close();
return;
}
if (isTriangle(a, b, c))
System.out.println("面积为:" + calcArea(a, b, c));
else
System.out.println("不是正确的三角形。");
s.close();
}
public static boolean isTriangle(Double a, Double b, Double c) {
if ((a + b c) (a + c b) (b + c a))
return true;
return false;
}
public static Double calcArea(Double a, Double b, Double c) {
Double s = (a + b + c) / 2;
Double area = Math.sqrt(s * (s - a) * (s - b) * (s - c));
return area;
}
}
结果如下:
海伦公式的几种另证及其推广
关于三角形的面积计算公式在解题中主要应用的有:
设△abc中,a、b、c分别为角a、b、c的对边,ha为a边上的高,r、r分别为△abc外接圆、内切圆的半径,p
=
(a+b+c),则
s△abc
=
aha=
ab×sinc
=
r
p
=
2r2sinasinbsinc
=
=
其中,s△abc
=
就是著名的海伦公式,在希腊数学家海伦的著作《测地术》中有记载。
海伦公式在解题中有十分重要的应用。
一、
海伦公式的变形
s=
=
①
=
②
=
③
=
④
=
⑤
二、
海伦公式的证明
证一
勾股定理
分析:先从三角形最基本的计算公式s△abc
=
aha入手,运用勾股定理推导出海伦公式。
证明:如图ha⊥bc,根据勾股定理,得:
x
=
y
=
ha
=
=
=
∴
s△abc
=
aha=
a×
=
此时s△abc为变形④,故得证。
证二:斯氏定理
分析:在证一的基础上运用斯氏定理直接求出ha。
斯氏定理:△abc边bc上任取一点d,
若bd=u,dc=v,ad=t.则
t
2
=
证明:由证一可知,u
=
v
=
∴
ha
2
=
t
2
=
-
∴
s△abc
=
aha
=
a
×
=
此时为s△abc的变形⑤,故得证。
证三:余弦定理
分析:由变形②
s
=
可知,运用余弦定理
c2
=
a2
+
b2
-2abcosc
对其进行证明。
证明:要证明s
=
则要证s
=
=
=
ab×sinc
此时s
=
ab×sinc为三角形计算公式,故得证。
证四:恒等式
分析:考虑运用s△abc
=r
p,因为有三角形内接圆半径出现,可考虑应用三角函数的恒等式。
恒等式:若∠a+∠b+∠c
=180○那么
tg
·
tg
+
tg
·
tg
+
tg
·
tg
=
1
证明:如图,tg
=
①
tg
=
②
tg
=
③
根据恒等式,得:
+
+
=
①②③代入,得:
∴r2(x+y+z)
=
xyz
④
如图可知:a+b-c
=
(x+z)+(x+y)-(z+y)
=
2x
∴x
=
同理:y
=
z
=
代入
④,得:
r
2
·
=
两边同乘以
,得:
r
2
·
=
两边开方,得:
r
·
=
左边r
·
=
r·p=
s△abc
右边为海伦公式变形①,故得证。
证五:半角定理
半角定理:tg
=
tg
=
tg
=
证明:根据tg
=
=
∴r
=
×
y
①
同理r
=
×
z
②
r
=
×
x
③
①×②×③,得:
r3
=
×xyz
import java.util.*;
class MyException extends Exception{
public MyException(String msg){
super(msg);
}
public String getMessage(){
return super.getMessage();
}
}
public class Hailun{
public static double enter(int i){
Scanner sc = new Scanner(System.in);
boolean flag = false ;
String str = null ;
while(!flag){
System.out.println("输入第"+i+"条边长,类型为double型");
str = sc.nextLine();
if(!str.matches("\\d+[.]{0,1}\\d+")){
try{
throw new MyException("输入内容类型不正确");
}catch(MyException e){
e.printStackTrace();
}
}
else{
flag = true ;
}
}
return Double.valueOf(str);
}
public static double jisuan() throws MyException{
double x = 0,y = 0,z = 0;
x = enter(1);
y = enter(2);
z = enter(3);
isTrue(x,y,z);
double p = (x+y+z)/2;
p = Math.sqrt((p*(p-x)*(p-y)*(p-z)));
return p;
}
public static boolean isTrue(double x,double y,double z) throws MyException{
if(x+yzx+zyy+zx){
return true ;
}
else{
throw new MyException("输入的三条边无法构成三角形!");
}
}
public static void main(String args[]){
try{
System.out.println("面积为:"+jisuan());
}catch(MyException e){
e.printStackTrace();
}
}
}