我对 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# 关键字(例如 var
或 dynamic
)试图将 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/