编写一个三角形类,能根据输入的3个double类型数据构造三角形对象,定义三个构造方法。
如果这3个数据满足构成三角形的条件,直接构造三角形。
否则,如果3个数的最大值大于0,则自动构造以最大值为边的等边三角形。
如果最大值也不大于0,则将三角形类的三边都初始化为0。
再定义一个getArea方法,计算所构造的三角形的面积,返回类型为double。
最后,编写main方法,测试getArea方法,计算三角形的面积。
输入:
输入三个有理数,中间用空格隔开。
例如:
8.9 6.4 7.2
输出:输出三角形的面积。
例如:
22.78812396293297
代码
import java.util.Scanner;
/**
* Created by qrato on 2016/5/18.
*/
public class Main {
public static void main(String[] args) {
// write your code here
Scanner input=new Scanner(System.in);
double a,b,c;
a=input.nextDouble();
b=input.nextDouble();
c=input.nextDouble();
// System.out.println(y1);
Rectangle r=new Rectangle(a,b,c);
System.out.println(r.getArea());
}
}
class Rectangle{
double e1,e2,e3;
private double findMax(double a,double b,double c){
if(a>b&&a>c){
return a;
}
else if(c>a&&c>b){
return c;
}
else
return b;
}
Rectangle(double i1,double i2,double i3){
if (i1+i2>i3&&i2+i3>i1&&i1+i3>i2&&i1>0&&i2>0&&i3>0){
e1=i1;
e2=i2;
e3=i3;
}
else {
double max=findMax(i1,i2,i3);
if (max>0){
e1=max;
e2=max;
e3=max;
}
else {
e1=0;
e2=0;
e3=0;
}
}
}
public double getArea(){
double p=(e1+e2+e3)/2;
double s=Math.sqrt(p*(p-e1)*(p-e2)*(p-e3));
return s;
}
}
网友评论