我正在测试三角形的边,看看该三角形是等边三角形还是等腰三角形,但即使所有值都相等,我仍然得到 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/