加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

java用抽象类求解三角形、矩形、圆的周长和面积

(2013-03-21 11:27:00)
标签:

java

抽象类

周长和面积

it

在java的学习中,我发现了它与c语言的巨大差别。总的一个特点就是面向对象,很符合现实生活的客观规律,里面有抽象和继承。利用抽象类以及继承的相关知识,自己编写了一个小程序。这个程序主要就是用于求解普通三角形、矩形和圆的周长和面积。下面是这段程序的代码。

 

import java.text.DecimalFormat;
//定义了一个为形状的抽象类,抽象类中有求周长和面积的抽象函数。
abstract class ShapeType
{
 public abstract void GetPerimeter();
 public abstract void GetArea();
}
//这是求三角形的周长和面积
class Triangle extends ShapeType
{
 private double a;
 private double b;
 private double c;
 public void setNum(double a,double b,double c)
 {
  if(a<=0 || b<=0 || c<0)
  {
   System.out.println("您输入的数据不合法,请重新输入!");
   return;
  }
  else if (a>=b+c || b>a+c || c>a+b)
  {
   System.out.println("您输入的数字无法形成三角形!");
   return;
  }
  else
  {
   this.a=a;
   this.b=b;
   this.c=c;
  }
 }
 //三角形的周长求解
 public void GetPerimeter()
 {
  System.out.println("此三角形的边长分别是:"+this.a+" ,"+this.b+" ,"+this.c+"\t"+"周长是:"+(a+b+c));
 }
 //三角形的面积求解,应用了海伦公式求解三角形面积
 public void GetArea()
 {
  double p=(a+b+c)/2;
  double y=Math.sqrt(p*(p-a)*(p-b)*(p-c));
  System.out.println("此三角形的边长分别是:"+this.a+" ,"+this.b+", "+this.c+"\t"+"面积是:"+y);
 }
}
//这是求解圆的面积和周长
class Cirle extends ShapeType
{
 private double r;
 public void setNum(double r)
 {
  if(r<=0)
  {
   System.out.println("您输入的数据不合法,请重新输入!");
   return;
  }
  else
  {
   this.r=r;
  }
 }
 //圆的周长求解,结果应用了四舍五入,保留小数点后两位。
 public void GetPerimeter()
 {
  DecimalFormat r2=new DecimalFormat("#.00");
  System.out.println("此圆形的半径为"+this.r+"\t"+"周长为"+r2.format(2*Math.PI*r));
 }
 //圆的面积求解,结果应用了四舍五入,保留小数点后两位。
 public void GetArea()
 {
  DecimalFormat r1=new DecimalFormat("#.00");
  
  System.out.println("此圆形的半径为"+this.r+"\t"+"面积为"+r1.format(r*Math.PI*r));
 }
}
//矩形的周长和面积
class Squareness extends ShapeType
{
 private double a;
 private double b;
 public void setNum(double a,double b)
 {
  if(a<=0 || b<=0)
  {
   System.out.println("您输入的数据不合法,请重新输入!");
  }
  else
  {
   this.a=a;
   this.b=b;
  }
 }
 //矩形的周长求解
 public void GetPerimeter()
 {
  System.out.println("此矩形的两边分别是:"+this.a+" ,"+this.b+"周长是:"+2*(a+b));
 }
 //矩形的面积求解
 public void GetArea()
 {
  System.out.println("此矩形的两边分别是:"+this.a+" ,"+this.b+"面积是:"+a*b);
 }
}
class InterfaceShape
{
 public static void main(String[] args)
 {
  Triangle t=new Triangle();
  t.setNum(3,4,5);
  t.GetPerimeter();
  t.GetArea();
  Cirle c=new Cirle();
  c.setNum(2.5);
  c.GetPerimeter();
  c.GetArea();
  Squareness s=new Squareness();
  s.setNum(8.5,11.1);
  s.GetPerimeter();
  s.GetArea();

 }
}

输出结果为:

---------- java ----------
此三角形的边长分别是:3.0 ,4.0 ,5.0 周长是:12.0
此三角形的边长分别是:3.0 ,4.0, 5.0 面积是:6.0
此圆形的半径为2.5 周长为15.71
此圆形的半径为2.5 面积为19.63
此矩形的两边分别是:8.5 ,11.1周长是:39.2
此矩形的两边分别是:8.5 ,11.1面积是:94.35

输出完成 (耗时 0 秒) - 正常终止

 

总结:

      这个程序包含了如何求三角形、矩形、圆的周长和面积。海伦公式的应用让求解三角形的面积更加的方便和快捷,减少了许多麻烦
      在求的过程中私有了方法的变量,用到了setter函数,实现了方法的良好的封装性。
      在setter过程中,实现了对输入的变量有效性的控制,使它更加符合现实生活的规律,增加了程序的健壮性。
      在求圆的周长和过程中用到了Math类和DecimalFormat类,以及增加了四舍五入的算法,保证输出的数据更有实际意义。

0

阅读 收藏 喜欢 打印举报/Report
后一篇:2013年03月22日
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有