第二章编程练习题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();
}
}