Java 我能';无法使布尔类型方法正确返回

Java 我能';无法使布尔类型方法正确返回,java,methods,Java,Methods,我试图编写一个程序,以任意顺序取三角形的三条边,按升序(a、b、c)重新排列,然后告诉用户三角形的类型和面积。但是,我无法找出我的代码有什么问题,因为它总是为我的isValid方法获取错误的真/假值。即使这些边不构成三角形,它仍然继续进行,就好像isValid方法返回true一样。有什么建议吗?谢谢 package javaapplication1; import java.util.Scanner; public class Test { public static void m

我试图编写一个程序,以任意顺序取三角形的三条边,按升序(a、b、c)重新排列,然后告诉用户三角形的类型和面积。但是,我无法找出我的代码有什么问题,因为它总是为我的isValid方法获取错误的真/假值。即使这些边不构成三角形,它仍然继续进行,就好像isValid方法返回true一样。有什么建议吗?谢谢

package javaapplication1;

import java.util.Scanner;

public class Test
{

    public static void main(String[] args)
    {                                   

        Scanner input = new Scanner(System.in);

        System.out.println("Enter three numbers:");
        double a = input.nextDouble();
        double b = input.nextDouble();
        double c = input.nextDouble();

        if (a > b)
        {
            double temp = a;
            a = b;
            b = temp;
        }
        if (b > c)
        {
            double temp = b;
            b = c;
            c = temp;
        }
        if (a > b)
        {
            double temp = a;
            a = b;
            b = temp;
        }

        double area = area(a, b, c);
        boolean isValid = isValid(a, b, c);
        String type = type(a, b, c);

        if (isValid = true)
        {
            System.out.println("This triangle is " + type);
            System.out.printf("The area is %.2f", area, "\n\n");

        }
        else
        {
            System.out.print("Invalid triangle");
        }
    }

    public static boolean isValid(double a, double b, double c)
    {
        if (a + b > c)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public static double area(double a, double b, double c)
    {
        double s = (a + b + c)/2.0;
        double area = Math.sqrt(s * (s - a) * (s - b) * (s - c));
        return area;
    }

    public static String type(double a, double b, double c)
    {
        String type;

        if (a == c)
        {
            type = "equilateral";
        } else if (a == b || b == c)
        {
            type = "isosceles";
        } else 
        {
            type = "scalene";
        }
        return type;          
    }
}

问题似乎就在这里(除非是打字错误):

您正在将
true
赋值给
isValid
,因此
if
语句中的条件始终为true

比较基本值的正确方法是使用两个等号:

if (isValid == true)
然而,对于布尔人来说,这是多余的。测试布尔值是否为真/假的最佳方法是使用布尔变量本身:

if (isValid)

哪些输入工作不正常?另外,你可以说
return(a+b)>c而不是重复你自己。如果我按12、6、5或相反的顺序做,两次都会出现“三角形是不等边的,面积是NaN”。就是这样!谢谢你接电话。我一直在这样看太久了,我怀疑我会很快看到它。再次感谢!没问题!只是想让您知道,在某些IDE中(我知道它至少适用于Eclipse),有一个选项可以为条件中可能的意外赋值打开编译器警告。这将有助于防止未来的错误
if (isValid)