我不能让我的布尔类型方法正确返回

时间:2014-05-10 03:21:44

标签: java methods

我试图编写一个以任意顺序取三角形三边的程序,按升序排列它们(a,b,c),然后告诉用户它是什么类型的三角形和区域。但是,我无法弄清楚我的代码出了什么问题,因为它一直在为我的isValid方法获取错误的true / false值。即使双方不构成一个三角形,它仍然会像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;          
    }
}

1 个答案:

答案 0 :(得分:1)

问题似乎在这里(除非是拼写错误):

if (isValid = true)

您将true分配给isValid,因此if语句中的条件始终为真。

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

if (isValid == true)

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

if (isValid)