計算多邊形的周長和面積,編寫的類


設計一個名為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();
}
}
如果不是正多邊形該怎么改啊,怎么改都不對,幫忙改一下。

7 个解决方案

#1


改成不是正多邊形,隨意的多邊形

#2


恐怕要加一個頂點數組,邊長度數組(雖然不是必要的,只是輔助的)

#3


怎么改啊 不會啊

#4


引用 3 樓 jqgzxp 的回復:
怎么改啊 不會啊

設計一個頂點類Vertex
包含屬性
int x;
int y;
Vertex next;

再將所有頂點對象加入多邊形類的頂點集合屬性中
 List<Vertex> list = new ArrayList<Vertext>();
list.add(vertex1);
...

#5


改個完整的吧

#6


public abstract class Shape{

private int a;

public int Perimeter();

public int area();

}

public class Triangle extends Shape{

private int b,c;

public Triangle(int o,int p,int q){

a=o;

b=p;

c=q;

}

public int Perimeter(){

return a+b+c;

}

public int area(){

int p;

p=(a+b+c)/2;

return sqrt(p(p-a)(p-b)(p-c)); 
}

}
這樣對不

#7


Map m=new HashMap(); //TreeMap,Hashtable,Properties均可
     m.put("張三","13000001111");
     m.put("李四","13111110000");
     m.put("王五","13333332222");
     m.put("張三","13800008888");  //覆蓋掉第一個值
     System.out.println("是否有李四的電話號碼:"+m.containsKey("李四"));
     m.remove("王五");  //刪除王五的記錄
     String zsCode=(String)m.get("張三");
//輸出所有電話薄
     //通過迭代Key
     Set keys=m.keySet();
     Iterator iter = keys.iterator();
     while (iter.hasNext()) {
       Object key =iter.next();
       Object value=m.get(key);
       System.out.println(key+":"+value);
     }
     //通過迭代MapEntry,一個Map.Entry是一個Key+value的組合
     Set entrys=m.entrySet();
     Iterator itr = entrys.iterator();
     while (itr.hasNext()) {
      Map.Entry entry = (Map.Entry)itr.next();
      String key=(String)entry.getKey();
      String value=(String)entry.getValue();
      System.out.println(key+":"+value);
這個的輸出結果是什么

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com