java - 为什么我的 if 语句 JAVA 总是得到错误的输出

标签 java if-statement

我正在测试三角形的边,看看该三角形是等边三角形还是等腰三角形,但即使所有值都相等,我仍然得到 else 输出。 有问题的代码位于底部,我只是包含其余部分以供引用

public static void main(String[] args) 
{
    System.out.println("  Triangle Calculator  \n");

    Scanner inputab = new Scanner(System.in);

    System.out.println("Input lenghts of sides 'a' and 'b':");
    double sideA = inputab.nextDouble();
    double sideB = inputab.nextDouble();

    System.out.println("Input the size of Angle C in degrees:");
    double angleC = inputab.nextDouble();
    inputab.close();

    double sideC = Math.sqrt((Math.pow(sideA, 2) + 
    Math.pow(sideB, 2)- 2*(sideA*sideB)*Math.cos(Math.toRadians(angleC))));     

    System.out.println("\n\t   /\\\n\t  /  \\\n\t /    \\\n\t/      \\");
    System.out.printf("   %3.1f",sideA);
    System.out.print("/        \\");
    System.out.printf("%3.1f",sideB);
    System.out.println("\n      /          \\\n     /            \\\n    /______________\\");
    System.out.printf("\t  %3.1f\n", sideC);

    double angleA = Math.asin(sideA*Math.sin(Math.toRadians(angleC))/sideC);

    angleA = Math.toDegrees(angleA);

    double angleB = 180 - angleC - angleA;

    double perimeter = sideA + sideB + sideC;

    double hf = 0.5 * (sideA + sideB + sideC);
    double area = Math.sqrt(hf*(hf-sideA)*(hf-sideB)*(hf-sideC));

    System.out.printf("\nSide a       = ");
    System.out.printf("%4.3f",sideA);
    System.out.printf("\nSide b       = ");
    System.out.printf("%4.3f", sideB);
    System.out.printf("\nSide c       = ");
    System.out.printf("%4.3f", sideC);
    System.out.printf("\nAngle A(Deg) = "); 
    System.out.printf("%5.3f", angleA  );
    System.out.printf("\nAngle B(Deg) = ");
    System.out.printf("%5.3f", angleB);
    System.out.printf("\nAngle C(Deg) = ");
    System.out.printf("%5.3f", angleC);
    System.out.printf("\nPerimeter    = ");
    System.out.printf("%5.3f", perimeter);
    System.out.printf("\nArea         = ");
    System.out.printf("%5.3f", area);


    if (sideA == sideB && sideA == sideC)
    {
        System.out.println("\nThis is an Equilateral Triangle");
    }
    else
    {
        System.out.println("\nThis is not an Equilateral Triangle");
    }

    if ((sideA == sideB && sideB!= sideC ) 
       ||(sideA != sideB && sideC == sideA) 
       || (sideC == sideB && sideC != sideA))
    {
        System.out.println("\nThis is an Isosceles Triangle");
    }
    else 
    {
        System.out.println("\nThis is not an Isosceles Triangle");
    }

最佳答案

尖尖的是正确的。我在调试器模式下运行 eclipse 以查看程序执行时的值。我使用 5 作为边 A 和 B 的值,使用 60 作为角度 C。结果是A、B边等于5.0,而C边等于4.9999…… 您可以采用多种方法来解决此问题,但您似乎有能力,尤其是现在您知道问题是什么。

关于java - 为什么我的 if 语句 JAVA 总是得到错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32550071/

相关文章:

c# - 有效使用正则表达式处理文件名的好方法是什么?

c - if 语句处理两次?

python - 为什么 Python 不在 try 语句上实现 elif 语句?

Bash 嵌套 If-Else 错误

php - 停止为PHP提供错误number_format

java - 为什么不运行套件类,而是运行其他测试

java - 接口(interface)引用和具体类引用之间的区别

java - 具有多个参数的 Java 8 的 Function.Function

java - 使用 HttpUrlConnection 访问 Tomcat 时 404,从浏览器访问 200

java - 静态错误和主要问题