Расчет площади на Java; Порядок действий - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь найти площадь многоугольника, используя следующую формулу:

Площадь = r ^ 2 n sin (2 π / n) / 2

, где n - это количество сторон и r это радиус. Я не думаю, что мой код дает правильный результат. Если n = 6 и r = 4, я получаю область 24. Мой код выглядит следующим образом:

import java.math.*;

publi c class RegularPolygon {

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

It Мне неясно, где мой порядок операций испорчен.

Ответы [ 2 ]

0 голосов
/ 04 мая 2020

Вы не должны вводить cast для float, так как вы объявили тип возвращаемого значения метода double

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

Я думаю, что приведенный выше код удовлетворит вашу потребность.

0 голосов
/ 04 мая 2020

Вы неправильно переводите формулу. Вам нужно return Math.pow(r, 2) * n * Math.sin(2 * Math.PI / n) / 2; Как указал Форпас в комментариях, вы пропускаете 2 и говорите Math.sin(Math.PI / n) Это не имеет ничего общего с порядком операций, поскольку это всего лишь умножение и деление.

...