如何在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);
}

尝试了上面的操作,但它的工作如预期的那样。因为在我的例子中,我想在另外两个短数字中检查两个短数字。怎么做

如何在c#中找到两个短数字之间的两个短数字

将签名更改为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)) {...}