正在计算 Java 中的面积;操作顺序

Calculating Area in Java; Order of Operations

我正在尝试使用以下公式计算多边形的面积:

面积 = r^2 n sin( 2 π / n) / 2

其中 n 是边数,r 是半径。我认为我的代码没有产生正确的结果。如果 n= 6 和 r = 4,我得到的面积是 24。我的代码如下:

import java.math.*;

public class 正多边形 {

private int n; // number of vertices
private double r; //radius of the polygon

/**
 * This is the full constructor
 * @param n is the number of vertices
 * @param r is the radius
 */
public RegularPolygon(int n, double r) {
    super();
    this.n = n;
    this.r = r;


}

/**
 * default constructor.  Sets number of sides and radius to zero
 */
public RegularPolygon() {
    super();
    this.n = 0;
    this.r = 0;

}

//getters and setters for Number of vertices "n" and radius "r".

public int getN() {
    return n;
}

public void setN(int n) {
    this.n = n;
}

public double getR() {
    return r;
}

public void setR(double r) {
    this.r = r;
}

@Override
public String toString() {
    return "RegularPolygon [n=" + n + ", r=" + r + "]";
}

public double area(){
    float area;
    //this method returns the area of the polygon
    //Use Math.PI and Math.sin as needed
    return area =  (float) (Math.pow(r, 2)* n * ( Math.sin(Math.PI / n)/2));

我不清楚我的操作顺序在哪里搞砸了。

您没有正确翻译公式。你需要 return Math.pow(r, 2) * n * Math.sin(2 * Math.PI / n) / 2; 正如 forpas 在评论中指出的那样,你错过了一个 2 并说 Math.sin(Math.PI / n) 这与操作顺序无关,因为它只是乘法和除法。

您不应将类型强制转换为 float,因为您已将方法的 return 类型声明为 double

return Math.pow(r,2) * n * Math.sin(2 * Math.PI/n) / 2;

我认为上面的代码可以满足您的需求。