已知棱长求三棱锥的表面积和体积

已知棱长求三棱锥的表面积和体积

一年前编写的程序,刚学习Java时的接口练习

import java.util.Scanner;


import static java.lang.StrictMath.sqrt;

/**
 * @Author :Shilaiyuan
 * @Date:2019-10-25
 * @Description:
 * 声明三棱锥类triangular,实现Area和Volume接口,计算表面area和体积volume*
 * 三棱锥的面积:海伦-秦九韶公式
 * 三棱锥的体积:欧拉四面体公式
 * @Email :[email protected]
 */
interface Area{
    
    
   // double TriangularArea(double OA,double OB,double OC,double AB,double AC,double BC);用来计算各面三角形的面积
   abstract double TriangularArea();
}

interface Volume{
    
    
    //double Volume(double OA, double OB, double OC, double AB, double AC,double BC);//用来计算体积
   abstract double TriangularArea();
}

public class triangular implements Area,Volume{
    
    
    private static double[] leng;
    private double[] x;

    public double TriangularArea() {
    
    //海伦公式计算四个面的面积
        double p1,p2,p3,p4;//p1为面OAB,p2为面OAC,p3为面OBC,p4为面ABC
        double s,s1,s2,s3,s4;//s为表面积,s1为OAB面积,s2为OAC面积,s3为OBC面积,s4为ABC面积
        x=leng;
        //OAB
        p1=(x[0]+x[1]+x[3])/2;
        s1=sqrt(p1*(p1-x[0])*(p1-x[1])*(p1-x[3]));
        //OAC
        p2=(x[0]+x[2]+x[4])/2;
        s2=sqrt(p2*(p2-x[0])*(p2-x[2])*(p2-x[4]));
        //OBC
        p3=(x[1]+x[2]+x[5])/2;
        s3=sqrt(p3*(p3-x[1])*(p3-x[2])*(p3-x[5]));
        //ABC
        p4=(x[3]+x[4]+x[5])/2;
        s4=sqrt(p4*(p4-x[3])*(p4-x[4])*(p1-x[5]));
        s=s1+s2+s3+s4;
        System.out.println("四棱锥的侧面积为:\n OAB="+s1+";\n OAC="+s2+";\n OBC="+s3+";\n ABC="+s4);
        System.out.println("四棱锥的表面积为"+s);
        return 0.0;
    }


    public double Volume() {
    
    //欧拉四面体公式计算体积
        x=leng;
        double v,z;
        double r=x[0]*x[0];
        double p=x[1]*x[1];
        double q=x[2]*x[2];
        double i=x[3]*x[3];
        double j=x[4]*x[4];
        double k=x[5]*x[5];
        double s1=(r+p-i)/2;
        double s2=(r+q-j)/2;
        double s3=(p+q-k)/2;
        z=r*(p*q-s3*s3)-s1*(s1*q-s2*s3)+s2*(s1*s3-p*s2);
        v=sqrt(z);
        System.out.println("四棱锥的体积为:"+v);
        return 0;
    }

    public static void main(String[] args){
    
    
        System.out.println("请依次输入三棱锥的棱长OA,OB,OC,AB,AC,BC");
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine().toString();
        String arr[] = str.split(",");
        double n[] = new double[6];//数组n存储每一个棱长
        for(int i=0;i<n.length;i++){
    
    
            n[i]=Integer.parseInt(arr[i]);
        }
        triangular t1 = new triangular();
        leng=n;
        t1.TriangularArea();
        t1.Volume();
    }

}

目前没有改进的想法,有bug或者其他改进思路话欢迎request我哦。
程序运行效果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zhanwaifeixue/article/details/109365182
今日推荐