Java内部的几何图形

Java内部的几何图形,java,windows,forms,object,ascii,Java,Windows,Forms,Object,Ascii,好的,我正在为作业画一个几何图形,我完成了95%。我唯一的问题是,无论我多么努力地“抚平”它,我仍然得到一些不起作用的东西。(我已经试过添加。我试图重现的图形是椭圆形的。 主方法使用四个整数:x=14,y=8,radiusA=5,radiusB=1 下面是输出应该是什么样子 public static void DrawingFigures(int x, int y, int radiusA, int radiusB) { for (int i = 0; i <= 20; i++) {

好的,我正在为作业画一个几何图形,我完成了95%。我唯一的问题是,无论我多么努力地“抚平”它,我仍然得到一些不起作用的东西。(我已经试过添加。我试图重现的图形是椭圆形的。 主方法使用四个整数:x=14,y=8,radiusA=5,radiusB=1

下面是输出应该是什么样子

public static void DrawingFigures(int x, int y, int radiusA, int radiusB) {
  for (int i = 0; i <= 20; i++) {
    for (int j = 0; j <= 20; j++) {
      double dx = Math.pow(((j - x) / radiusA), 2);
      double dy = Math.pow(((i - y) / radiusB), 2);
      if (dx + dy == 1 && dx + dy == 1) {
        System.out.print("#");
      } else {
        System.out.print(" ");
      }
    }
    System.out.println();
  }
}

公共静态无效图形(int x、int y、int radiusA、int radius){

对于(int i=0;i<p>),在中间做整数除法。在每一个除法之前尝试抛出<代码>(J-X)和<代码>(i-y)< /C> >代码>双< /代码>,否则每一个除法的结果将被舍入到下面的整数。

< P>这两个问题是:

  • 您应该使用double而不是上面David提到的int
  • 您在公式中使用的分辨率是两个小的,以查看省略号
尝试使用x=27,y=7,radiusA=25,radiusB=5并查看结果。更改为双精度将提高精度

下面是使用上述值修改的代码版本(使用
JavaTest255
运行):

公共类测试{
公共静态void main(字符串[]arg){
Test.DrawingFigures(Double.parseDouble(arg[0])、Double.parseDouble(arg[1]);
}
公共静态空隙图(双半径,
双半径(USB){
绘图图形(半径、半径、半径、半径、半径);
}
公共静态空心图(双x、双y、双半径、,
双半径(USB){

对于(double i=0;我尝试了,得到了相同的结果。谢谢你的尝试。好吧,即使还有另一个bug,你也需要这样做。如果没有强制转换,它根本不起作用。很抱歉,我不确定是否理解你的问题?嵌套的for循环是扫描我的x和y位置的循环。if语句中的公式它决定了我想要的“#”的位置。哦,我在问题中写下了它,但这里是:x=14,y=8,radiusA=5,radiusB=1我尝试了这个程序,它超出了界限。但问题是,部分作业要求我硬编码这些值。
public class Test {

  public static void main(String[] arg) {
    Test.DrawingFigures(Double.parseDouble(arg[0]), Double.parseDouble(arg[1]));
  }

  public static void DrawingFigures(double radiusA,
          double radiusB) {
    DrawingFigures(radiusA, radiusB, radiusA, radiusB);
  }

  public static void DrawingFigures(double x, double y, double radiusA,
          double radiusB) {
    for (double i = 0; i <= 2 * radiusB; i++) {
      for (double j = 0; j <= 2 * radiusA; j++) {
        if (Math.pow(((j - x) / radiusA), 2) + Math.pow(
                ((i - y) / radiusB), 2) == 1.0d) {
          System.out.print("#");
        } else {
          System.out.print(" ");
        }
      }
      System.out.println();
    }
  }
}