1

我试图在 Java 的帮助下画一个圆圈,但我被卡住了这是我到目前为止所做的,

public class Circle {
public static void DrawMeACircle(int posX, int posY, int radius) {
    int a = 10;
    int b = 10;

    int x = posX - a; //x = position of x away from the center
    int y = posY - b;
    int xSquared = (x - a)*(x - a);
    int ySquared = (y - b)*(y - b);
    for (int i = 0;i <=20; i++) {
        for (int j = 1;j <=20; j++) {
            if (Math.abs(xSquared) + (ySquared) >= radius*radius && Math.abs(xSquared) + (ySquared) <= radius*radius) {
                    System.out.println("#");
            } else {
                System.out.println(" ");
            }
        }

    }
}

public static void main(String[] args){
    DrawMeACircle(5,5,5);



    }

}

如您所见,这不能正常工作。有谁知道如何解决这个问题?迈克尔,我很感谢您提供的任何帮助。

4

1 回答 1

1

首先,你的内在if条件不依赖于iand j,所以是一个常数。这意味着每次都打印相同的符号,即空格符号。

接下来,您System.out.println(" ");每次都在使用,为每个符号添加一个换行符。因此,结果看起来像一列空格。

最后但并非最不重要的一点是:绘图区域受到 20x20“像素”的限制,无法适应大圆圈。

您可以将所有这些点与类似的东西一起修复

public class Circle {
public static void DrawMeACircle(int posX, int posY, int radius) {
    for (int i = 0;i <= posX + radius; i++) {
       for (int j = 1;j <=posY + radius; j++) {
            int xSquared = (i - posX)*(i - posX);
            int ySquared = (j - posY)*(j - posY);
            if (Math.abs(xSquared + ySquared - radius * radius) < radius) {
                System.out.print("#");
            } else {
                System.out.print(" ");
            }
        }
        System.out.println();
    }
}

public static void main(String[] args){
    DrawMeACircle(5,15,5);
}
}

这让我们有点类似于圆圈。

于 2013-10-20T22:52:08.537 回答