English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

各位大大…我想在這個程式新增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());
}
}
(我急需…給我完整程式~~~拜託!!)

2006-06-19 15:59:35 · 1 個解答 · 發問者 旺旺 2 in 電腦與網際網路 程式設計

請問大大…
放在main()裡不能執行耶…有錯誤
public Rectangle overlay(Rectangle r) {
^
1 error

2006-06-20 08:25:36 · update #1

1 個解答

 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() 中就可以使用之。

2006-06-20 08:07:25 · answer #1 · answered by ? 7 · 0 0

fedest.com, questions and answers