编写一个三角形类,能根据输入的3个double类型数据构造三角形对象,定义三个构造方法。
如果这3个数据满足构成三角形的条件,直接构造三角形。否则,如果3个数的最大值大于0,则自动构造以最大值为边的等边三角形。如果最大值也不大于0,则将三角形类的三边都初始化为0。
再定义一个getArea方法,计算所构造的三角形的面积,返回类型为double。
最后,编写main方法,测试getArea方法,计算三角形的面积。
输入:
输入三个有理数,中间用空格隔开。例如:
8.9 6.4 7.2
输出:
输出三角形的面积。例如:
22.78812396293297
import java.util.Scanner;;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
triAngle t = new triAngle(in.nextDouble(), in.nextDouble(), in.nextDouble());
System.out.println(t.getArea());
}
}
class triAngle {
private double a;
private double b;
private double c;
triAngle(double a, double b, double c){
double max;
if(a > b && a > c) {
max = a;
}else if(b > c) {
max = b;
}else {
max = c;
}
if(a > 0 && b > 0 && c > 0 && a + b > c && a + c > b && b + c > a) {
this.a = a;
this.b = b;
this.c = c;
}else if(max > 0) {
this.a = max;
this.b = max;
this.c = max;
}else {
this.a = 0;
this.b = 0;
this.c = 0;
}
}
double getArea() {
//S=根号[s(s-a)(s-b)(s-c)]
double s = (a + b + c) / 2;
return Math.sqrt(s * (s - a) * (s - b) * (s - c));
}
}