旺旺 發問時間: 電腦與網際網路程式設計 · 1 0 年前

急急急…JAVA多重定義建構方(15點)-二天

各位大大…我想在這個程式新增2個方法,第1方法overlap()傳入一個Rectangle物件,並傳回一個Rectangle物件,代表兩個矩形重疊的區域;第2方法isSquare()傳回boolean值,表示該矩形是否為正方形,這二個方法要怎麼寫丫…

class Point {

public int x,y;

public Point(int x,int y) {

this.x = x;

this.y = y;

}

}

class Rectangle {

Point upperleft;

Point lowerright;

// 完整版建構方法

public Rectangle(Point upperleft,Point lowerright) {

this.upperleft = upperleft;

this.lowerright = lowerright;

}

// 不需參數的建構方法

public Rectangle() {

this(new Point(0,0),new Point(5,-5));

}

// 直接指定座標

public Rectangle(int x1,int y1,int x2,int y2) {

this(new Point(x1,y1),new Point(x2,y2));

}

// 正方形

public Rectangle(Point upperleft,int length) {

this(upperleft,new Point(upperleft.x + length,

upperleft.y - length));

}

// 計算面積

public int area() {

return (lowerright.x - upperleft.x) *

(upperleft.y - lowerright.y);

}

}

public class OverloadConstructor {

public static void main(String[] argv){

Rectangle a = new Rectangle(0,0,5,-5);

Rectangle b = new Rectangle(new Point(3,3),4);

System.out.println(\"a的面積:\" + a.area());

System.out.println(\"b的面積:\" + b.area());

}

}

(我急需…給我完整程式~~~拜託!!)

已更新項目:

請問大大…

放在main()裡不能執行耶…有錯誤

public Rectangle overlay(Rectangle r) {

^

1 error

1 個解答

評分
  • 1 0 年前
    最佳解答

     public Rectangle overlay(Rectangle r) {  // 首先先排除掉兩個矩形無交集時,傳回 null 值  if ((r.upperleft.x >= lowerright.x && r.upperleft.y >= lowerright.y) ||   (r.lowerright.x <= upperleft.x && r.lowerright.y <= upperleft.y))   return null;  int x1 = (r.upperleft.x > upperleft.x) ? r.upperleft.x : upperleft.x; // 重疊矩形左上角的 x 值  int y1 = (r.upperleft.y > upperleft.y) ? r.upperleft.y : upperleft.y; // 重疊矩形左上角的 y 值  int x2 = (r.lowerright.x > lowerright.x) ? lowerright.x : r.lowerright.x; // 重疊矩形右下角的 x 值  int y2 = (r.lowerright.y > lowerright.y) ? lowerright.y : r.lowerright.y; // 重疊矩形右下角的 y 值  return new Rectangle(x1, y1, x2, y2); } public boolean isSquare() {  // 當左上角與右下角的 x 值差及 y 值差相等時,即可視為正方形  return Math.abs(upperleft.x - lowerright.x) == Math.abs(upperleft.y - lowerright.y); }這兩個方法你可以在 main() 裡測試看看。

    2006-06-23 16:22:32 補充:

    抱歉,我沒有看到你的補充問題。這個 overlay() 方法不能放在 main() 裡面。請放在 Rectangle 類別中,與 area() 同層。如此在 OverloadConstructor 的 main() 中就可以使用之。

還有問題?馬上發問,尋求解答。