在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类,以及增加了四舍五入的算法,保证输出的数据更有实际意义。
加载中,请稍候......