运用继承,接口,包等技术,编写求解几何图形 (包括三角形,矩形,圆) 的周长,面积
import java.io.*;
interface getProperty{
double Pi = 3.1415926;
double getArea();
double getCircum();
String getName();
}
class mpoint{
static int i = 0;
double x,y;
mpoint(double a,double b){
this.x = a;
this.y = b;
}
double getX(){
return x;
}
double getY(){
return y;
}
}
class disp{
double area;
double circum;
String drawingName;
disp(double a,double b,String ss){
this.area = a;
this.circum = b;
this.drawingName = ss;
}
public void display(){
System.out.println("图像 是 "+ drawingName);
System.out.println("面积 = "+area+'\n'+"周长 = "+circum);
}
}
class triangle implements getProperty{
mpoint p1,p2,p3;
double s1,s2,s3;
String drawingName = "triangle";
triangle(mpoint p1,mpoint p2, mpoint p3){
this.p1 = p1;
this.p2 = p2;
this.p3 = p3;
this.s1 = Math.sqrt((p1.x - p2.x)*(p1.x - p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
this.s2 = Math.sqrt((p3.x - p2.x)*(p3.x - p2.x)+(p3.y-p2.y)*(p3.y-p2.y));
this.s3 = Math.sqrt((p1.x - p3.x)*(p1.x - p3.x)+(p1.y-p3.y)*(p1.y-p3.y));
}
public double getArea(){
double ss,ssa;
ss = (s1+s2+s3)*Pi/2.0/Pi;
ssa = Math.sqrt(ss*(ss-s1)*(ss-s2)*(ss-s3));
return ssa;
}
public double getCircum(){
return s1+s2+s3;
}
public String getName(){
return drawingName;
}
public boolean tline(){
return true;
}
}
class circle implements getProperty{
mpoint p1;
double radius;
String drawingName = "Circle";
circle(mpoint p1,double radius){
this.p1 = p1;
this.radius = radius;
}
public double getArea(){
double ssa;
ssa = Math.PI*radius*radius;
return ssa;
}
public double getCircum(){
return Math.PI*2.0*radius;
}
public String getName(){
return drawingName;
}
public boolean tcircle(){
return true;
}
}
class rectangle implements getProperty{
mpoint p1,p2;
double s1,s2;
String drawingName = "Rectangle";
rectangle(mpoint p1,mpoint p2){
this.p1 = p1;
this.p2 = p2;
this.s1 = Math.sqrt((p1.x-p2.x)*(p1.x-p2.x));
this.s2 = Math.sqrt((p1.y-p2.y)*(p1.y-p2.y));
}
public double getArea(){
return s1*s2;
}
public double getCircum(){
return s1+s2+s1+s2;
}
public String getName(){
return drawingName;
}
public boolean rline(){
return true;
}
}
public class drawing extends disp{
drawing (double a, double b, String ss){
super(a,b,ss);
}
public static void main(String[] args) throws IOException {
BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
String strxx;
for(;true;){
System.out.println("输入字符串如 Triangle,Rectangle,Circle:");
strxx = keyin.readLine();
if(strxx.length() == 0) continue;
char charxx;
charxx = strxx.toUpperCase().charAt(0);
switch(charxx)
{
case'T': //三角形
System.out.println("请输入(三角形) 第一个点 x(enter) y(enter)");
mpoint p1 = new mpoint(aVar(keyin),aVar(keyin));
System.out.println("请输入(三角形) 第二个点 x(enter) y(enter)");
mpoint p2 = new mpoint(aVar(keyin),aVar(keyin));
System.out.println("请输入(三角形) 第三个点 x(enter) y(enter)");
mpoint p3 = new mpoint(aVar(keyin),aVar(keyin));
triangle t1 = new triangle(p1,p2,p3);
disp tdisp = new drawing(t1.getArea(),t1.getCircum(),t1.getName());
tdisp.display();
break;
case'C': //圆形
System.out.println("请输入(圆形) 圆心 x(enter) y(enter)");
mpoint p4 = new mpoint(aVar(keyin),aVar(keyin));
System.out.println("请输入半径 x(enter)");
double radius = aVar(keyin);
circle t2 = new circle(p4,radius);
disp cdisp = new drawing(t2.getArea(),t2.getCircum(),t2.getName());
cdisp.display();
break;
case'R': //长方形
System.out.println("请输入(长方形)第一个点 x(enter) y(enter)");
mpoint p6 = new mpoint(aVar(keyin),aVar(keyin));
System.out.println("请输入(长方形)第一个点 x(enter) y(enter)");
mpoint p7 = new mpoint(aVar(keyin),aVar(keyin));
rectangle t3 = new rectangle(p6,p7);
disp rdisp = new drawing(t3.getArea(),t3.getCircum(),t3.getName());
rdisp.display();
break;
default:System.out.println("错误,请输入 t(T),c(C),r(R)");
}
}
}
static double aVar(BufferedReader keyin) throws IOException
{
String xx;
xx = keyin.readLine();
return Double.parseDouble(xx);
}
}