我正试图在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);
}
}
正如您所看到的,这无法正常运行。有谁知道如何解决这个问题? 我很感谢任何可能的帮助,迈克尔。
答案 0 :(得分:0)
首先,您的内部if
条件不依赖于i
和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);
}
}
这使我们有点类似于圆圈。