正方形内の点をランダムに選択して2本の線を引き、次にそれらの各象限を4つに分割し、幅/高さが1になるまで、正方形を4つの小さな象限に分割しようとしています。再帰的な方法。私のコードはここにあります:
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を指すこのエラーが発生します。このエラーの意味と修正方法を教えてください。