我試圖通過在正方形中隨機選擇一個點並通過它畫兩條線,然後將每個象限分成4個等等,直到將方形分成4個小象限,直到寬度/高度爲1,以遞歸的方式。我的代碼是在這裏:遞歸地劃分正方形區域
public static void draw(int x0, int y0, int xmax, int ymax) {
if (Math.abs(xmax - x0) > 1 && Math.abs(ymax - y0) > 1) {
int rx = r.nextInt(xmax - 1) + 1; // line A
int ry = r.nextInt(ymax - 1) + 1; // line B
StdDraw.line(rx, y0, rx, ymax);
StdDraw.line(x0, ry, xmax, ry);
draw(x0, y0, rx, ry); // line C
draw(x0, ry, rx, ymax); // line D
draw(rx, ry, xmax, ymax); // line E
draw(rx, y0, xmax, ry); // line F
}
else ;
也就是說,我傳遞左下角座標(X0,Y0)和右上角座標(XMAX,YMAX)。每當我註釋掉D,E和F行時,一切正常。但是當我取消註釋D,E或F時,我得到這個錯誤java.lang.IllegalArgumentException: n must be positive
,通常指向A行或B行。有人可以告訴我這個錯誤意味着什麼以及我如何解決它?
常(XMAX ,yMax)是左上角,(x2,y2)是右下角。 –
@ColinD你是什麼意思「通常?」我認爲它不重要,因爲我控制了繪製線的起點和終點 – yiwei
我錯誤地編輯了我的註釋,它應該讀取(x0,y0),然後是(xMax,yMax)。我只是想指出,爲了使用圖形庫,您的座標可能需要翻譯。另外,由於代碼片段沒有清楚地標識出您正在使用哪個API,它可能是問題的一部分。 –