编写一个程序,提示输入三角形的边长并报告三个角

编写一个程序,提示输入三角形的边长并报告三个角。


我没有得到等于180的角度,并且在某些情况下,我得到NaN的某些角度值。


我的代码如下所示


public static int getSideA() {

    System.out.println("What is the length of side a?");

    Scanner console = new Scanner(System.in);

    int a = console.nextInt();

    return a;

}


public static int getSideB() {

    System.out.println("What is the length of side b?");

    Scanner console = new Scanner(System.in);

    int b = console.nextInt();

    return b;

}


public static int getSideC() {

    System.out.println("What is the length of side C");

    Scanner console = new Scanner(System.in);

    int c = console.nextInt();

    return c;

}


public static void giveSides(int a, int b, int c) {

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

    System.out.println("The three angles are: " + angleA + " " + angleB + " " + angleC);

}


public static void main(String[] args) {

    int a = getSideA();

    int b = getSideB();

    int c = getSideC();

    giveSides(a, b, c);

}


叮当猫咪
浏览 69回答 1
1回答

胡说叔叔

问题在于这三行: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);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java