画一个简单的圆圈

时间:2013-10-20 22:30:02

标签: java geometry

我正试图在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);



    }

}

正如您所看到的,这无法正常运行。有谁知道如何解决这个问题? 我很感谢任何可能的帮助,迈克尔。

1 个答案:

答案 0 :(得分:0)

首先,您的内部if条件不依赖于ij,因此是常量。这意味着每次都会打印相同的符号,即空格符号。

接下来,您每次都使用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);
}
}

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