1 回答
TA贡献1804条经验 获得超8个赞
问题在于这三行:
double angleA = Math.toDegrees(Math.acos((a^2 - b^2 - c^2) / (-2.0 * c * b)));
double angleB = Math.toDegrees(Math.acos((b^2 - a^2 - c^2) / (-2.0 * a * c)));
double angleC = Math.toDegrees(Math.acos((c^2 - a^2 - b^2) / (-2.0 * a * b)));
^2并不意味着“平方”。它的意思是“按位异或 2”。您需要使用a*a或Math.pow(a, 2)表示“平方”。
所以这三行应该是:
double angleA = Math.toDegrees(Math.acos((a*a - b*b - c*c) / (-2.0 * c * b)));
double angleB = Math.toDegrees(Math.acos((b*b - a*a - c*c) / (-2.0 * a * c)));
double angleC = Math.toDegrees(Math.acos((c*c - a*a - b*b) / (-2.0 * a * b)));
此外,这些getSideX方法可以合并为一个,并且可以将扫描仪提取到类级别:
static Scanner console = new Scanner(System.in);
public static int getSide(String name) {
System.out.println("What is the length of side " + name + "?");
int a = console.nextInt();
return a;
}
您的main方法现在如下所示:
public static void main(String[] args) {
int a = getSide("A");
int b = getSide("B");
int c = getSide("C");
giveSides(a, b, c);
}
添加回答
举报