编写一个Java应用程序,该程序中有三个类:Triangle、Trapezoid和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。具体要求如下:
1.Triangle类具有类型为double的三个边,以及周长、面积属性,Triangle类具有返回周长、面积以及修改三个边的功能。此外,Triangle类还有一个boolean型的属性,该属性用来判断三个数能够构成一个三角形。完成上述操作后,给Triangle再增加3个方法,分别用来返回3个边sideA, sideB, sideC的值。
2.Lander类具有类型为double的上底、下底、高、面积属性,具有返回面积的功能。
3.Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的功能。
4.编写一个测试类Test,分别创建类Triangle、Trapezoid和Circle的对象,并计算三角形、梯形和圆形的周长和面积。
5.画出该应用程序的类图。
package com.google;
import java.util.Scanner;
//此程序写出三个类,triangle,Lader,circle
//其中triangle类具有类型为double的a,b,c边以及周长,面积属性
//具有周长,面积以及修改三边的功能,还有判断能否构成三角形的boolean类
//Lader类具有类型为double的上底下底和高,面积属性,具有返回面积的功能
//circle 类具有类型为double的半径,周长和面积。具有返回周长面积的功能
class Lader{
double shangdi;
double xiadi;
double gao;
//构造方法
public Lader(double shangdi,double xiadi,double gao){
this.shangdi=shangdi;
this.xiadi=xiadi;
this.gao=gao;
}
public double CalculateArea()
{
return (shangdi+xiadi)*gao/2.0;
}
}
class Circle{
double r;
double area;
double perimeter;
public static final double PI=3.141592;
//构造方法
public Circle(double r)
{
this.r=r;
}
public double getArea()
{
return PI*r*r;
}
public double getPerimeter()
{
return 2*PI*r;
}
}
public class Triangle
{
double a;
double b;
double c;
double area;
double perimeter;
boolean isTriangle;
static Scanner input=new Scanner(System.in);
//构造方法
public Triangle(double a,double b,double c)
{
this.a=a;
this.b=b;
this.c=c;
isTriangle=triangle();
}
public double getA()
{
return a;
}
public void setA(double a)
{
this.a = a;
}
public double getB()
{
return b;
}
public void setB(double b)
{
this.b = b;
}
public double getC()
{
return c;
}
public void setC(double c)
{
this.c = c;
}
private boolean triangle()
{
if((a+b>c)&&(a+c>b)&&(b+c>a)&&(a-b<c)&&(a-c<b)&&b-c<a)
return true;
return false;
}
//求取三角形的面积
public double getArea()
{
if(isTriangle)
{
area=(a+b+c)*1.0/2;
return area;
}
throw new IllegalArgumentException("三边不能构成上三角行!");
//满足条件时有一个返回,编译器提示你在不满足条件时还需要一个返回
//这时候我们就需要自己抛出一个异常
}
public double getPerimeter()
{
if(isTriangle)
{
perimeter=a+b+c;
return perimeter;
}
throw new IllegalArgumentException("三边不能构成上三角行!");
}
//更改三边数值
public void UpdateSide()
{
System.out.println("请分别输入要更改的 a,b,c三边值:");
double update_a=input.nextDouble();
double update_b=input.nextDouble();
double update_c=input.nextDouble();
a=update_a;
b=update_b;
c=update_c;
System.out.println("三角形的周长:"+getPerimeter());
System.out.println("三角形的面积:"+getArea());
}
public void prompt()
{
System.out.println("是否更改三边数值?");
System.out.println("是 (请输入1)");
System.out.println("否 (请输入2)");
int num=input.nextInt();
if(num==1)
{
UpdateSide();
}
else if(num==2)
{
System.out.println("谢谢使用!");
}
else
{
System.out.println("输入错误!");
}
}
public static void main(String[] args)
{
Triangle triangle=new Triangle(3,4,5);
Lader lader = new Lader(2.00,3.00,2.00);
//三个参数分别是上底 下底 高
Circle circle = new Circle(3.00);
//参数是圆的半径
System.out.println("面积是"+lader.CalculateArea());
System.out.println("圆形周长是"+circle.getPerimeter());
System.out.println("圆形面积是"+circle.getArea());
System.out.println("三角形的周长:"+triangle.getPerimeter());
System.out.println("三角形的面积:"+triangle.getArea());
triangle.prompt();
}
}