检查列表中是否重叠数字值?

时间:2014-02-12 18:27:01

标签: vb.net

我有一个添加新定价规则的功能,每个定价规则有两个范围(A_Low,A_High)(B_Low,B_High)。当函数想要添加新价格时,需要确保范围不重叠,使得每个输入的A和B值只能匹配1个所述定价规则。 A& B可以是正数或负数。

逻辑的一个例子:

规则1:A_Low = 0.0,A_High = 1.0; B_Low 0.0,B_High = 0.25

如果我尝试添加以下规则:

案例1:A_Low = 0.5,A_High = 1.5; B_Low 0.26,B_High = 1.0

应该允许上述测试用例,如果B没有,A可以重叠,如果A没有,B可以重叠。我有一个问题包围我正确的逻辑,以评估和确定我试图添加的价格规则是否有效...我知道有检查重叠日期的函数,是否有一个重叠数值范围?< / p>

我仍然无法弄清楚我的错误,这是我的示例代码:

 For Each p In Rules
        If p.A_Max > A_Min And p.A_Min < A_Max Then
            If p.B_Max> B_Min And p.B_Min < B_Max Then
                Return False
            End If
        End If

        If p.B_Max> B_Min And p.B_Min < B_Max Then
            If p.A_Max > A_Min And p.A_Min < A_Max Then
                Return False
            End If
        End If
    Next
    Return True

2 个答案:

答案 0 :(得分:0)

这可以提供帮助:intervals collection class。它是用C#编写的,但编码非常简单,很容易理解。适应您的需求应该相对简单。

答案 1 :(得分:0)

如果存在重叠

,则返回true

Rule_High&gt; Case_Low和Rule_Low&lt; CASE_HIGH

您只需要检查A和B,如果两者都重叠,那么您就会出错。

如果您有类似的内容,也可以检测到重叠:

案例1:A_Low = 0.5,A_High = 0.7; B_Low -1,B_High = 2