promotion image of download ymail app
Promoted
Anonymous
Anonymous asked in 電腦與網際網路程式設計 · 1 decade ago

JAVA程式計算面積

abstract class Land { // 父類別

abstract double area(); // 計算面積

}

class Circle extends Land { // 圓形的土地

int r; // 半徑(單位:公尺)

Circle(int r) { // 建構方法

this.r = r;

}

double area() { // 多重定義的版本

return 2 * 3.14 * r * r;

}

}

class Square extends Land { // 正方形的土地

int side; // 邊長(單位:公尺)

Square(int side) { // 建構方法

this.side = side;

}

double area() { // 多重定義的版本

return side * side;

}

}

class Calculator {

double price; // 每平方公尺的價格(元)

Calculator(double price) { // 建構方法

this.price = price;

}

double calculatePrice(Land l) {

return calculatePrice(price,l);

}

double calculatePrice(double price,Land l) {

return l.area() * price; // 透過多形呼叫正確的 area() 方法

}

double calculateAllPrices(Land... Lands) {

// 使用多重定義的版本

return calculateAllPrices(price,Lands);

}

double calculateAllPrices(Object... Lands) {

// 使用多重定義的版本

int times; // 重複次數

Land l;

double total = 0; // 計算加總

int i = 0;

while(i < Lands.length) {

times = 1;

if(Lands[i] instanceof Land) {

l = (Land) Lands[i++]; // 取得形狀

if(i < Lands.length // 有下一個元素

&& Lands[i] instanceof Integer) // 是整數

times = (Integer) Lands[i++]; // 取得重複次數

total += times * calculatePrice(l);

}

}

return total;

}

double calculateAllPrices(double price,

Land... Lands) { // 多重定義的版本

double total = 0; // 計算加總

for(Land l : Lands) { // 一一取出各個物件

total += calculatePrice(price,l); // 個別計算並累加

}

return total;

}

}

public class AbstractLands {

public static void main(String[] argv) {

Circle c = new Circle(5); // 一塊圓形的地

Square s = new Square(5); // 一塊正方形的地

Calculator ca = new Calculator(3000.0); // 每平方公尺3000元

System.out.println("總價值:" + // 使用匿名陣列

ca.calculateAllPrices(s,2,c));

}

}

---------------------------------------------------------------------------------------

Update:

以上面為範本改&加上下面的條件.....

1.設計1個長方形土地 長方形extends Land

2.求出一塊正方形(邊長10)

二個長方形(邊長3.4)

三個圓形(半徑2)

單價為500(平方公尺) 之土地價格總和!

要用Gel設計......

1 Answer

Rating
  • Jeremy
    Lv 4
    1 decade ago
    Favorite Answer

    (略)

    ...

    (略)

     

    class Rectangle extends Land {

      int side1, side2;

      public Rectangle(int side1, int side2) {

        this.side1 = side1;

        this.side2 = side2;

      }

      double area() {

        return side1 * side2;

      }

    }

     

    (略)

    ...

     

    (略)

     

    public class AbstractLands {

      public static void main(String[] argv) {

        Square s = new Square(10); // 一塊正方形的地

        Rectangle r = new Rectangle(3, 4); // 一塊正方形的地

        Circle c = new Circle(2); // 一塊圓形的地  

        

        Calculator ca = new Calculator(500.0); // 每平方公尺500元

        

        //表示法一

        System.out.println("總價值:" + // 使用匿名陣列

        ca.calculateAllPrices(s,1,r,2,c,3));

        

        //表示法二

        System.out.println("總價值:" + // 使用匿名陣列

            ca.calculateAllPrices(s,r,r,c,c,c));

      }

    }

     

     

    Java沒有規定要用 Gel 設計,Gel 只是一種 Java 程式語言編輯器。

    2008-04-19 20:41:42 補充:

    上面程式空白的部分都是 <font color="red">"全形空白"

    要複製程式執行時,必須把"全形空白"換成半形空白或 tab 字元</font>

    2008-04-19 20:43:53 補充:

     

    我們知道長方形有兩長度不一的邊,另一邊為 side1,另一邊為 side2。

    面積當然就是 side1 * side2,如下所示

    class Rectangle extends Land {

      int side1, side2;

      public Rectangle(int side1, int side2) {

        this.side1 = side1;

        this.side2 = side2;

      }

      double area() {

        return side1 * side2;

      }

    }

      

    2008-04-19 20:47:36 補充:

    各種物件表示法如下所示

    一塊正方形(邊長10) : Square s = new Square(10); // 一塊正方形的地

    二個長方形(邊長3.4) : Rectangle r = new Rectangle(3, 4); // 一塊長方形的地

    三個圓形(半徑2):   Circle c = new Circle(2); // 一塊圓形的地

    單價為500(平方公尺) 之土地價格總和!

    Calculator ca = new Calculator(500.0); // 每平方公尺500元

    2008-04-19 20:51:07 補充:

     

    總價值有兩種以上的方法可以表示,描述如下:

     //表示法一

     System.out.println("總價值:" + ca.calculateAllPrices(s , 1 , r , 2 , c , 3 ));

        

     //表示法二

     System.out.println("總價值:" + ca.calculateAllPrices(s , r , r , c , c , c ));

     

     

    執行結果:

     總價值:80849.55592153876

     總價值:80849.55592153876

     

     

    注意:

     圓面積公式:半徑 x 半徑 x PI

     上面有寫錯,請注意!

    • Commenter avatarLogin to reply the answers
Still have questions? Get your answers by asking now.