正在计算 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;
我认为上面的代码可以满足您的需求。
我正在尝试使用以下公式计算多边形的面积:
面积 = 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;
我认为上面的代码可以满足您的需求。