我有4个变量(int值(:
int adults = 0;
int child = 0;
int singleMoto = 0;
int doubleMoto = 0;
规则如下:
singleMoto
是一款只有1名成年人才能乘坐的摩托车。doubleMoto
是一款摩托车,只有两名成年人或一名带一个孩子的成年人才能乘坐。
所以如果我有:
adults = 3;
child = 0;
singleMoto = 2;
doubleMoto = 1;
上述验证是FALSE,因为:
3名成人和0名儿童的配置为3个
singleMoto
OR1个singleMoto
和1个doubleMoto
其他示例可能是:
adults = 5;
child = 1;
singleMoto = 4;
doubleMoto = 1;
上述验证是TRUE,因为:
5名成人和1名儿童配置:
4
singleMoto
与1doubleMoto
2
singleMoto
与2doubleMoto
现在我用简单的IF
语句来验证这一点,比如:
if(adults == 3 and child == 0){
// show validation
}
但我确信这可以用MOD%或其他东西来完成。
有线索吗?
我想这就是你要问的:
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
if(child <= doubleMoto && (child + 2*(doubleMoto-child) + singleMoto == adults))
{
//...
}
每个孩子都需要一辆双人摩托车。每个带孩子的双人摩托有1名成年人,其他双人摩托有一名,每个单人摩托有一人。
编辑:"child"必须为<=doubleMoto。这是运输它们的唯一途径。剩下的座位必须由成年人坐满。
在双人摩托车上,每个孩子必须有1名成年人陪同。对于没有孩子的摩托车(doubleMoto-child(,每个摩托车有2个成年人。对于每辆单人摩托,只有1辆成人车。
因此,child + 2*(doubleMoto-child) + singleMoto == adults