如何在c#中找到两个短数字之间的两个短数字
本文关键字:两个 数字 之间 | 更新日期: 2023-09-27 18:01:36
我有两个短数字20101,20141,如果我通过20121和20131,那么它应该返回它在范围内可用。如果我传递20081和20091,那么它应该返回false, 20142到20154也是如此。
如何找到两个短数的中间值
bool TestRange (int numberToCheck, int bottom, int top)
{
return (numberToCheck >= bottom && numberToCheck <= top);
}
尝试了上面的操作,但它的工作如预期的那样。因为在我的例子中,我想在另外两个短数字中检查两个短数字。怎么做
将签名更改为bool TestRange (int[] numbersToCheck, int bottom, int top)
并迭代numbersToCheck
并根据需要返回
由于我经常需要这样做,而且我很懒,所以我编写了一个扩展方法来检查两个值之间是否有整数。
public static class IntExtensions
{
public static bool Between(this int value, int lowerBound, int upperBound)
{
return value >= lowerBound && value <= upperBound;
}
}
这样你就可以很容易地在LinQ中使用
return Array.All(x => x.Between(integer, integer)); // All numbers must be in range.
return Array.Any(x => x.Between(integer, integer)); // At least one number must be in range.
或者直接返回与约束匹配的数字作为新数组:
return Array.Where(x => x.Between(integer, integer)).ToArray();
在一般情况下,如果有很多(任意数目)项目要测试,我建议修改签名并使用Linq:
// If you want to pass many items, pass IEnumerable<T>
bool TestRange(IEnumerable<int> numbersToCheck, int bottom, int top) {
if (null == numberToCheck)
throw new ArgumentNullException("numbersToCheck"); // or return true or false...
return numbersToCheck.All(item => item >= bottom && top <= item);
}
...
if (TestRange(new int[] {20121, 20131}, 20101, 20141)) {...}