第二章編程練習(xí)題2
編寫一個三角形類,能根據(jù)輸入的3個double類型數(shù)據(jù)構(gòu)造三角形對象桌粉,定義三個構(gòu)造方法蒸绩。
如果這3個數(shù)據(jù)滿足構(gòu)成三角形的條件,直接構(gòu)造三角形铃肯。
否則患亿,如果3個數(shù)的最大值大于0,則自動構(gòu)造以最大值為邊的等邊三角形押逼。
如果最大值也不大于0步藕,則將三角形類的三邊都初始化為0。
再定義一個getArea方法挑格,計算所構(gòu)造的三角形的面積咙冗,返回類型為double。
最后漂彤,編寫main方法雾消,測試getArea方法,計算三角形的面積挫望。
輸入:
輸入三個有理數(shù)立润,中間用空格隔開。
例如:
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();
}
}