Java 已知三角形边长,求三角形面积。
程序员文章站
2022-04-03 22:47:35
...
利用海伦公式求面积:
1.编写三角形类
package com.sanj.bean;
import com.sanj.exception.NotSanjiaoException;
import java.math.BigDecimal;
public class Sanj {
private int x;
private int y;
private int z;
public Sanj() {
}
public Sanj(int x, int y, int z) {
this.x = x;
this.y = y;
this.z = z;
}
/**
* 获取三角形面积
* @return
*/
public double getArea(){
//利用海伦公式求三角形面积
BigDecimal bigDecimal1 = new BigDecimal((this.x+this.y+this.z));
BigDecimal bigDecimal2 = new BigDecimal(2);
double p = bigDecimal1.divide(bigDecimal2, BigDecimal.ROUND_HALF_UP).doubleValue();
double area = Math.sqrt(p * (p - this.x) * (p - this.y) * (p - this.z));
return area;
}
/**
* 展示三角形边长
*/
public void showInfo(){
System.out.println("三角形信息:");
System.out.println("x边:" + this.x + " y边:" + this.y + " z边:" + this.z );
}
/**
* 检查三边是否能组成三角形
*/
public void check() throws NotSanjiaoException {
//校验三条边长非负数
if (this.x <= 0 || this.y <= 0 || this.z <= 0)
throw new NotSanjiaoException("x边:" + this.x + " y边:" + this.y + " z边:" + this.z + " 不能构成三角形");
//任意两边之和大于第三边
if ((this.x + this.y) <= this.z || (this.x + this.z) <= this.y || (this.y + this.z) <= this.x)
throw new NotSanjiaoException("x边:" + this.x + " y边:" + this.y + " z边:" + this.z + " 不能构成三角形");
//任意两边之差小于第三边
if ((this.x - this.y) >= this.z || (this.x - this.z) >= this.y || (this.y - this.z) >= this.x)
throw new NotSanjiaoException("x边:" + this.x + " y边:" + this.y + " z边:" + this.z + " 不能构成三角形");
}
}
2.编写自定义异常
package org.example.exception;
/**
* 自定义异常类
* 三边不能组成三角形异常
*/
public class NotSanjiaoException extends Exception{
public NotSanjiaoException() {
}
public NotSanjiaoException(String message) {
super(message);
}
}
3.测试
package org.example;
import org.example.bean.Sanj;
import org.example.exception.NotSanjiaoException;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws NotSanjiaoException {
Scanner sc = new Scanner(System.in);
System.out.println("输入第一条边边长:");
int x = sc.nextInt();
System.out.println("输入第二条边边长:");
int y = sc.nextInt();
System.out.println("输入第三条边边长:");
int z = sc.nextInt();
Sanj sanj = new Sanj(x,y,z);
sanj.check();
sanj.showInfo();
double area = sanj.getArea();
System.out.println("三角面积:"+area);
}
}
上一篇: Python函数 闭包
下一篇: 求三角形的面积
推荐阅读
-
python实现输入三角形边长自动作图求面积案例
-
CAD怎么画已知边长的三角形?
-
Java面向对象程序设计答案第6章----Java常用类(三角形面积公式,vector,InputDialog)
-
OC继承(写一个图形类,实现三角形,矩形和三角形求面积和周长)
-
JAVA求矩形三角形圆形梯形的面积和周长
-
以抛出异常的思想完成判断三边是否能够构成三角形及求三角形的面积
-
设计一个求直角三角形斜边长的函数
-
迅捷CAD编辑器怎么画已知边长三角形?
-
python实现输入三角形边长自动作图求面积案例
-
我们有一些图形的边长数据,这些图形包括三角新和矩形,请你编写一个程序求出它们的面积。请你实现一个基础图形类Graph,然后实现三角形类Triangle和矩形类Rectangle