将圆圈打印到屏幕上

时间:2013-11-15 17:50:55

标签: java

运行以下代码块时,为什么我没有在屏幕上打印圆圈? 它没有准确地打印出来,看起来像是在扫描坐标时我做错了。

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();
        } 
    }
} 

1 个答案:

答案 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度