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();  
        
    }

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容