运行以下代码块时,为什么我没有在屏幕上打印圆圈? 它没有准确地打印出来,看起来像是在扫描坐标时我做错了。
public class Question2 {
public static void main(String[] args) {
DrawMeACircle(3, 3, 3); // should print to the screen an ellipse looking circle
}
public static void DrawMeACircle(double posX, double posY, double radius) {
double xaxis = 20; // scanning the coordinates
double yaxis = 20; // " "
for (double x = 0; x < xaxis; x++) {
for (double y = 0; y < yaxis; y++) {
//using the formula for a cicrle
double a = Math.abs((posX - x) * (posX - x));
double b = Math.abs((posY - y) * (posY - y));
double c = Math.abs(a + b);
double d = Math.abs(radius * radius);
// checking if the formula stands correct at each coordinate scanned
if ( c == d) {
System.out.print('#');
}
else {
System.out.print(' ');
}
}
System.out.println();
}
}
}
答案 0 :(得分:2)
我害怕比较像这样的双打
if ( c == d) {
System.out.print('#');
}
是非常不可靠的,它们可能会略微缺失,而且您不会在需要的位置打印圆圈。
我建议检查范围
double arbitraryNumber = 2;
if ( math.abs(c - d) < arbitraryNumber)) {
System.out.print('#');
}
或者,如果你想要一种更可靠的方法,我会制作一个2-d char数组并将其视为坐标系,然后用圆圈填充2-d数组并打印数组。
您可以使用一点三角函数填充数组。只要找出点应该是每隔几度(或弧度),直到你已经360度