Programming Task 2-2-2

第二章编程练习题2

编写一个三角形类,能根据输入的3个double类型数据构造三角形对象,定义三个构造方法。
如果这3个数据满足构成三角形的条件,直接构造三角形。
否则,如果3个数的最大值大于0,则自动构造以最大值为边的等边三角形。
如果最大值也不大于0,则将三角形类的三边都初始化为0。
再定义一个getArea方法,计算所构造的三角形的面积,返回类型为double。
最后,编写main方法,测试getArea方法,计算三角形的面积。
输入:
输入三个有理数,中间用空格隔开。
例如:
8.9 6.4 7.2
输出:输出三角形的面积。
例如:
22.78812396293297

  
import java.util.Scanner;

class Triangle {
    //三角形的三边;
        double a;
        double b;
        double c;
    
    private double findMax(double x, double y, double z) {
        double max = x > y ? x > z ? x : z : y > z ? y : z ;
        return max;
    }
    public Triangle(double a, double b, double c) {
        if( a+b>c && a+c>b && b+c>a && a>0 && b>0 && c>0)
        {
            this.a = a;
            this.b = b;
            this.c = c;
        }
        
        else if ( findMax(a, b, c) > 0) {               
                this.a = findMax(a, b, c) ;
                this.b = findMax(a, b, c) ;
                this.c = findMax(a, b, c) ;     
        }
        
        else {
            if ( findMax(a, b, c) < 0 ) {
                this.a = 0 ;
                this.b = 0;
                this.c = 0;
            }
            
        }
        
    }
    public double getAera() {
        double hp = (a + b + c)/2 ;//周长的一半 halfperimeter
        //海伦公式
        double Aera = Math.sqrt( hp*(hp-a)*(hp-b)*(hp-c) );
        return Aera;
    }

}

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        double a = input.nextDouble();
        double b = input.nextDouble();
        double c = input.nextDouble();          
        System.out.println( new Triangle(a, b, c).getAera() );
        input.close();  
        
    }

}

你可能感兴趣的:(Programming Task 2-2-2)