因此,我接到了一个项目,其中我必须编写一个 Java 程序,以返回三角形三边之间的角度,并将这三个边作为方法的参数。我们可以使用一个数学公式来导出一个方程,称为余弦定理,给定三角形 a、b 和 c 的边,c^2 = a^2 + b^2 - 2ab * cos(C) 其中 C 是边 a 和 b 之间的某个角度。我们可以分离角度 C 并得到方程arccos((-c^2 + a^2 + b^2) / 2ab) = C。数学很简单,并且很容易在 Java 中实现,但是当我输入边 3、4、5(应产生 90、30、60)的输出时,我得到角度 53.130102、36.86989、90.0。这些绝对不是毕达哥拉斯三元组的角度,如 3、4、5。有谁知道我哪里出错了?
代码:
import static java.lang.Math.sqrt;
import static java.lang.Math.acos;
import static java.lang.Math.pow;
import static java.lang.Math.PI;
class Main {
public static void main(String[] args) {
anglesFinder(3, 4, 5);
}
public static void anglesFinder(int a, int b, int c) {
double alpha;
double beta;
double gamma;
alpha = (double) Math.acos((Math.pow(b, 2) + Math.pow(c, 2) - Math.pow(a, 2)) / (2 * c * b));
beta = (double) Math.acos((Math.pow(a, 2) + Math.pow(c, 2) - Math.pow(b, 2)) / (2 * a * c));
gamma = (double) Math.acos((Math.pow(a, 2) + Math.pow(b, 2) - Math.pow(c, 2)) / (2 * a * b));
System.out.println("angle between a & b is: " + (beta * (180 / Math.PI)));
System.out.println("angle between a & c is: " + (alpha * (180 / Math.PI)));
System.out.println("angle between b & c is: " + (gamma * (180 / Math.PI)));
}
}
守候你守候我
相关分类