我无法弄清楚如何使此条件起作用,我所需要做的就是检查两个变量是否等于一个数值,然后执行如下所示的代码。这是正确的方法吗?如果没有,有什么建议吗?
decimal operand1 = Convert.ToDecimal(txtOperand1.Text);
decimal operand2 = Convert.ToDecimal(txtOperand2.Text);
if (operand1 & operand2 == any numerical value between 1 and 99999)
{
// if true execute this
}
else
{
//if false execute this
}
答案 0 :(得分:4)
我所需要做的就是检查两个变量是否等于数值,
您的问题的描述与代码中的描述不同。在代码中,您说您需要检查两个变量是否等于特定范围内的任何值,而不是等于特定值。假设您是说后者。
这是正确的方法吗?
不。 &
应用于数字时有特殊含义,不适用于小数。
我对初学者的建议是:当您尝试代表一个新概念时,请制定一种代表该概念的方法。然后,随着技能的提高,您可以改进该方法。
在设计方法时,请考虑:有什么用,有什么用。我们希望做出决定,因此出现bool
。里面有什么?我们希望测试的值以及范围:
static bool IsInRange(decimal value, decimal low, decimal high)
{
好的,在什么情况下该东西可能为假?如果该值小于low
,则不在该范围内,因此请说:
if (value < low)
return false;
类似地:
if (value > high)
return false;
我们现在已经考虑了所有错误的案例,因此剩下的唯一案例始终都是真实的:
return true;
}
现在我们有了可以使用的工具。
if (IsInRange(operand1, 1m, 99999m) && IsInRange(operand2, 1m, 99999m)) ...
我们完成了吗?否。总是问自己是否有办法使程序更清晰。有:
const decimal low = 1m;
const decimal high = 99999m;
if (IsInRange(operand1, low, high) && IsInRange(operand2, low, high)) ...
现在,如果您决定更改范围,则只需执行一次。现在,含义分别为1m和99999m。
答案 1 :(得分:1)
您可以单独检查条件,然后将它们组合:
if(operand1 >= 1)
if(operand1 <= 99999)
将它们组合:if(operand1 >= 1 && if(operand1 <= 99999))
if(operand2 >= 1)
if(operand2 <= 99999)
将它们组合:if(operand2 >= 1 && if(operand2 <= 99999))
if ((operand1 >= 1 && operand1 <= 99999) && (operand2 >= 1 && operand2 <= 99999))
{
//stuff
}
答案 2 :(得分:0)
您需要将测试分为两个条件。当前,您正在使用按位或(用于二进制算术)。
这就是代码的外观(假设您有一个变量'numerical'
,要测试:
if (operand1 == numerical && operand2 == numerical)
{
// if true execute this
}
现在两个操作数必须等于数字。