C# - 使用 if/else 语句查找最多 3 个数字

标签 c#

我对 C# 完全陌生 - 只是尝试一些简单的东西。
我想使用 if/else 语句找到三个数字的最大值。我试着写这个方法:

public int Maximum(int num1, int num2, int num3)
    {
        if (num2 < num1 > num3)
        {
            return num1;
        }

        else if (num1 < num2 > num3)
        {
            return num2;
        }

        else if (num1 < num3 > num2)
        {
            return num3;
        }
    }

但我有点困惑。

Q1 - 通过说“int Maximum”,我是否仍然需要将每个参数声明为一个 int (或反过来相同)?还是一切都需要声明其数据类型?

Q2 - 一直告诉我“运算符'>'不能应用于 bool 和 int 类型的操作数”?我很困惑我应该在这里做什么。我做错了什么还是有其他选择?

谢谢你的帮助。

最佳答案

关于第一季度

C# 是 strongly typed语。这意味着您必须明确告诉编译器您的参数、变量、成员甚至方法返回值的类型。

这类似于其他强类型语言,例如 Java 或 C++。

附:最新的 C# 关键字(例如 vardynamic )试图将 C# 从强类型环境转移到混合环境。

关于第二季度
num < num2 > num3不是有效的条件表达式。
num < num2产生 bool , 所以下面的表达式 num < num2 > num3相当于bool > num3 ,这是无效的,因为您不能像这样比较 bool 和 int 。

您正在寻找的是 Conditional AND (&&)运算符(operator):

if (num < num2 && num2 > num3)
{
    return num2;
}

或者,您也可以使用嵌套 if实现相同行为的语句:
if (num < num2)
{
    if (num2 > num3)
    {
        return num2;
    }
}

关于你的代码

您提供的代码有另一个问题。

如果三个条件都不满足会怎样?该方法会返回什么?

当然,您知道这三个条件不可能永远满足,但编译器不知道这一点。

您必须返回一个虚拟值,或者删除您最后的 else if :
public int Maximum(int num1, int num2, int num3)
{
    if (num2 < num1 && num1 > num3)
    {
        return num1;
    }

    else if (num1 < num2 && num2 > num3)
    {
        return num2;
    }

    // If we reached this point, we know that num3 is the biggest of them all
    else
    {
        return num3;
    }
}

关于C# - 使用 if/else 语句查找最多 3 个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40061828/

相关文章:

c# - 如何使异步函数(如 OpenStreamForWriteAsync)同步?

c# - SQL Server 管理对象

c# - ASP .Net Core 在运行时更改路由

c# - 使用 C# 获取本地和网络打印机的列表

c# - XLWorkbook 到 MemoryStream 最终为空

c# - JSON.Net无法在自定义JsonConverter中反序列化json数组

c# - HttpWebRequest.CachePolicy : questions about caching

c# - 线程的创建和启动

c# - LINQ to Entities/LINQ to SQL : switching from server (queryable) to client (enumerable) in the middle of a query comprehension?

c# - javascript 未在 ASP.NET MVC 中调用