我试图写一个方法,它将输入三个边的长度,并以度表示角度。它用余弦定律求解与c相反的角度,并对边进行切换,从而找到第二个角。然而,程序没有输出任何正确的角度。例如,我输入了边长6、7和8,它给了我55.51、44.28和80.21。然而,6-7-8三角形中的任何一个角都比不上这些。下面是我使用的方法:
double angleNo(double a, double b, double c)
{
double calc = Math.toDegrees(Math.acos((a*a + b*b - c*c)/(2*a*b)));
double s = calc*100;
double r = Math.round(s);
double e = r/100;
return e;
}此外,如果有任何帮助,这里是执行它的地方:
angleOne = pull.angleNo(op1, op2, hypo);
angleTwo = pull.angleNo(op2, hypo, op1);
angleThree = 180 - angleTwo - angleOne;
}
System.out.println("The angles are " + angleOne + "°, " + angleTwo + "°, " + angleThree + "°.") 任何帮助都会很好,谢谢。
发布于 2014-09-30 16:53:26
公式是

所以改变
Math.toDegrees(Math.acos((a*a + b*b - c*c)/2*a*b));至
Math.toDegrees(Math.acos((a*a + b*b - c*c)/(2*a*b)));
^ ^(否则,您将被2除以,乘以a*b,而要除以2*a*b。)
我建议您不要试图舍入方法中的值。让它成为一个double,直到需要打印该值,然后使用例如
System.out.printf("Value: %.2f%n", yourDouble);https://stackoverflow.com/questions/26125999
复制相似问题