java - Circle 实现 - 如何建模以获取此信息

标签 java math geometry

1. Find circle diameter from radius
2. Find circle diameter from perimeter
3. Find circle diameter from area

4. Find circle perimeter from diameter
5. Find circle perimeter from radius

6. Find circle radius from diameter
7. Find circle radius from perimeter
8. Find circle radius from area

目前我们的模型类是这样实现的..

class Circle {
  double radius;

  Circle (double r) {
  }

// Solves 6,7,8
      double getDiameter() {}
      double getPerimeter() {}
      double getArea() {}

// static functions to solve 1-5
// e.g. public static double getPermiter(double diameter) {..}
    }

是否有更好的方法对上述类进行建模,以便我可以获取上述信息,因为给定某个参数(例如半径、直径、面积或周长),用户有望找到其他信息。

最佳答案

我可能更喜欢带有使用半径的构造函数的 Circle 类。您可以添加静态工厂方法以根据圆周和面积创建实例。

public class Circle
{
    double radius;

    public Circle(double radius)
    {
        this.radius = radius;
    }

    public static Circle fromCircumference(double circumference)
    {
        return new Circle(circumference / (Math.PI * 2));
    }

    public static Circle fromArea(double area)
    {
        return new Circle(Math.sqrt(area / Math.PI));
    }

    public double getCircumference()
    {
        return 2 * Math.PI * radius;
    }

    public double getRadius()
    {
        return radius;
    }

    public double getDiameter()
    {
        return 2 * radius;
    }

    public double getArea()
    {
        return Math.PI * radius * radius;
    }
}

关于java - Circle 实现 - 如何建模以获取此信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4592252/

相关文章:

java - 使用正则表达式查找字符串中的所有字母

java - 键盘没有在上方滚动 EditText

python - 重新调整两个数值范围之间的值

variables - grok logstash 中的 EVAL

java - 创建随机字符串

java - 从头开始为 JRE 创建 Docker 镜像

python - 迭代具有特定总和的列表

c++ - 计算横向拉伸(stretch)对象的比例和位置

android - 如何每2秒生成一个圆圈