计算多边形的周长和面积,编写的类
设计一个名为RegularPolygon的正n边形类
一个名为n的int型私有数据域定义多边形的边数,默认值为3。
一个名为side的double型私有数据域存储边的长度,默认值为1。
一个名为x的double型私有数据域,它定义多边形中点的x坐标,默认值为0。
一个名为y的double型私有数据域,它定义多边形中点的y坐标,默认值为0。
一个创建带默认值的正多边形的无参构造方法。
一个能创建带指定边数和边长度、中心在(0,0)的正多边形的构造方法。
一个能创建带指定边数和边长度、中心在(x,y)的正多边形的构造方法。
所有数据域的get和set方法。
一个返回多边形周长的方法getPerimeter()。
一个返回多边形面积的方法getArea()。计算正多边形面积的公式是:面积=(n*side2)/(4*tan(180/n))
分别使用无参构造方法、 RegularPolygon (6,4)和RegularPolygon(10,4,5.6,7.8)创建三个RegularPolygon对象,并显示每个对象的周长和面积。
代码如下:
//package regularPolygon;
public class RegularPolygon
{
private int n =3;
private double side = 1;
private double x = 0;
private double y = 0;
RegularPolygon(){}
RegularPolygon(int n,double side)
{
this.n = n;
this.side =side;
}
RegularPolygon(int n,double side,double x,double y)
{
this.n = n;
this.side = side;
this.x = x;
this.y = y;
}
public int getN(int n)
{
return n;
}
public void setN(int n)
{
this.n = n;
}
public double getSide(double side)
{
return side;
}
public void setSide(double side)
{
this.side = side;
}
public double getX(double x)
{
return x;
}
public void setX(double x)
{
this.x = x;
}
public double getY(double y)
{
return y;
}
public void setY(double y)
{
this.y = y;
}
public double getPerimeter()
{
System.out.println("正多边形的周长是"+n*side);
return n*side;
}
public double getArea()
{
System.out.println("正多边形的面积是"+(n*side*side)/(4*Math.atan(180/n)));
return (n*side*side)/(4*Math.atan(180/n));
}
}
/*setData()
{
Reg RegularPolygon=new Reg();
Scanner reader=new Scanner(System.in)
System.out.println("请输入多边形的边数n");
RegularPolygon.n=reader.nextInt();
System.out.println("请输入多边形边的长度side");
RegularPolygon.side=reader.nextDouble();
System.out.println("请输入多边形的x坐标x");
RegularPolygon.x=reader.nextDouble();
System.out.println("请输入多边形的x坐标x");
RegularPolygon.y=reader.nextDouble();
}
*/
//package regularPolygon;
public class Test
{
public static void main(String args[])
{
RegularPolygon a = new RegularPolygon();
RegularPolygon b = new RegularPolygon(6,4);
RegularPolygon c = new RegularPolygon(10,4,5.6,7.8);
a.getPerimeter();
a.getArea();
b.getPerimeter();
b.getArea();
c.getPerimeter();
c.getArea();
}
}
如果不是正多边形该怎么改啊,怎么改都不对,帮忙改一下。
[解决办法]
恐怕要加一个顶点数组,边长度数组(虽然不是必要的,只是辅助的)