什么是更有效的三角形分类方法?

Tie*_*son 2 c# if-statement

我被要求(学校)编写一个无效的函数并输出用户输入的三角形类型:

static void typeTri()
{
    if (side1 == side2 && side2 == side3)
    {
        Console.WriteLine("The triangle is equilateral.");
    }
    else if ((side1 == side2 && side2 != side3) || (side1 != side2 && side2 == side3) || (side1 == side3 && side1 != side2))
    {
        Console.WriteLine("The triangle is isoceles.");
    }
    else
    {
        Console.WriteLine("The triangle is scalene.");
    }
}
Run Code Online (Sandbox Code Playgroud)

对'else if'的测试似乎有点长.有任何想法吗?

Joe*_*Joe 7

多亏了逻辑,你可以简化你的第二个if:你不需要测试!=,因为如果它们是相同的,那么第一个if就已经满足了.

static void typeTri()
    {
        if (side1 == side2 && side2 == side3)
        {
            Console.WriteLine("The triangle is equilateral.");
        }
        else if ((side1 == side2) || (side2 == side3) || (side1 == side3))
        {
            Console.WriteLine("The triangle is isoceles.");
        }
        else if ((side1 >= side2 + side3) || (side2 >= side1 + side3) || (side3 >= side1 + side2) || (side1 <= 0) || (side2 <= 0) || (side3 <= 0))
        {
            Console.WriteLine("Not a Triangle");
        }
        else
        {
            Console.WriteLine("The triangle is scalene.");
        }
    }
Run Code Online (Sandbox Code Playgroud)

您还需要考虑这不是三角形的情况,但该要求可能超出了此特定问题的范围.

  • 不."运算符"=='不能应用于'bool'和'int'类型的操作数 (5认同)