根据其他int值验证int值

时间:2014-07-14 22:37:32

标签: c# validation c#-4.0

我有4个变量(int值):

int adults = 0;
int child = 0;
int singleMoto = 0;
int doubleMoto = 0;

规则如下:

singleMoto是一个摩托车,只有一个成年人可以骑。 doubleMoto是一辆摩托车,只有2名成人或1名成人和1名儿童可以骑行。

所以,如果我有:

adults = 3;
child = 0;
singleMoto = 2;
doubleMoto = 1;

上述验证为 FALSE ,原因是:

  

3名成人和0名儿童配置为3 singleMoto 1 singleMoto和1 doubleMoto

其他例子可能是:

adults = 5;
child = 1;
singleMoto = 4;
doubleMoto = 1;

以上验证为 TRUE ,原因是:

  

5名成人和1名儿童配置:

     
    

4 singleMoto AND 1 doubleMoto

         

2 singleMoto AND 2 doubleMoto

  

现在我使用简单的IF语句验证这一点,如:

if(adults == 3 and child == 0){
   // show validation
}

但我确信这可以使用MOD%或其他东西来完成。

有任何线索吗?

2 个答案:

答案 0 :(得分:0)

if(child <= doubleMoto && (child + 2*(doubleMoto-child) + singleMoto == adults))
   {
     //...
   }

每个孩子都需要一个doubleMoto。每个双人有1个成人,有孩子,1个为另一个双人,每个单人1个。

编辑:  'child'必须是&lt; = doubleMoto。这是他们运输的唯一方式。  剩余的座位必须由成年人填补。

在双摩托车上,每名儿童必须陪同1名成人。对于没有孩子的摩托车(doubleMoto - child),每个都有2个成年人。对于每个单人摩托车,只有1名成年人乘坐。

因此,child + 2*(doubleMoto-child) + singleMoto == adults

答案 1 :(得分:0)

我认为这就是你要问的问题:

public static bool Validate(int adults, int children, int singleMoto, int doubleMoto)
    {
        var childSeats = doubleMoto;
        var adultSeats = doubleMoto * 2 + singleMoto;

        if (children > childSeats)
        {
            return false;
        }

        adultSeats -= children;

        return adults == adultSeats;
    }

输出:

Validate(3,0,2,1) -- false
Validate(5,1,4,1) -- true
Validate(2,1,3,0) -- false