JAVA程序设计(自主模式)-编写一个三角形类,能根据输入的3个double类型数据构造三角形对象

版权声明:文章都是原创,转载请注明~~~~ https://blog.csdn.net/SourDumplings/article/details/88391907

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

猜你喜欢

转载自blog.csdn.net/SourDumplings/article/details/88391907