编程练习题2
(100/100 分数)
编写一个三角形类,能根据输入的3个double类型数据构造三角形对象,定义三个构造方法。
如果这3个数据满足构成三角形的条件,直接构造三角形。否则,如果3个数的最大值大于0,则自动构造以最大值为边的等边三角形。如果最大值也不大于0,则将三角形类的三边都初始化为0。
再定义一个getArea方法,计算所构造的三角形的面积,返回类型为double。
最后,编写main方法,测试getArea方法,计算三角形的面积。
输入:
输入三个有理数,中间用空格隔开。例如:
8.9 6.4 7.2
输出:
输出三角形的面积。例如:
22.78812396293297
Java:
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
double x, y, z;
x = sc.nextDouble();
y = sc.nextDouble();
z = sc.nextDouble();
sc.close();
Triangle t = new Triangle(x, y, z);
System.out.println(t.getArea());
}
}
class Triangle
{
private double x, y, z;
public Triangle(double x, double y, double z)
{
double max = -1;
boolean flag = false;
if (x > 0 && y > 0 && z > 0)
{
if (x + y > z && x + z > y && y + z > x)
{
this.x = x;
this.y = y;
this.z = z;
flag = true;
}
else
{
max = x > y ? x : y;
max = max > z ? max : z;
}
}
else
{
max = x > y ? x : y;
max = max > z ? max : z;
}
if (max < 0)
max = 0;
if (!flag)
this.x = this.y = this.z = max;
}
public double getArea()
{
double p = (x + y + z)/2;
return Math.sqrt(p * (p - x) * (p - y) * (p - z));
}
}