Я пытаюсь напечатать область и периметр треугольника с заданной длиной. Однако я успешно напечатал правильный периметр, но моя область неправильная (выход области равен 0,00). Я понял, что это потеря точности ошибки, но я не могу ее решить. Кто-нибудь, пожалуйста, рассмотрит этот код и укажет на проблему, особенно на метод экземпляра, calculateArea? Спасибо.Потеря точности точности Java с формулой Герона
public class Triangle
{
private int sideA=0, sideB=0, sideC=0, perimeter=0;
private double area=0;
public Triangle()
{
}
public Triangle(int a, int b, int c)
{
setSides(a,b,c);
}
public void setSides(int a,int b, int c)
{
sideA=a;
sideB=b;
sideC=c;
}
public void calculateArea()
{
int s;
s=(int)perimeter/2;
double area=Math.sqrt(s*(s-sideA)*(s-sideB)*(s-sideC));
}
public void calculatePerimeter()
{
perimeter=sideA+sideB+sideC;
}
public void printTriangle()
{
System.out.printf("The triangle with sides %d , %d and %d has an area of %.3f and perimeter %d%n", sideA, sideB, sideC, area, perimeter);
}
}
Для справки (его не нужно исправить), вот мой другой код.
public class TriangleRunner
{
public static void main(System[]args)
{
Triangle isoceles = new Triangle();
isoceles.setSides(3,3,3);
isoceles.calculateArea();
isoceles.calculatePerimeter();
isoceles.printTriangle();
Triangle right345 = new Triangle();
right345.setSides(3,4,5);
right345.calculateArea();
right345.calculatePerimeter();
right345.printTriangle();
}
}
спасибо. Мне просто интересно, как бы я назвал calcPerimeter в calcArea? – user41854