[英]C# two-dimensional array to validate entry in the form
每个用户都需要填写一种表格,该表格有4个字段:日期,账单代码,金额和货币。 帐单代码有一个下拉菜单,其中有很多选项有效,其中有4个选项有效(健康,旅行,膳食,旅馆)。 帐单代码字段不能留为空白,并且只能采用这四个选项之一。 用户使用4个帐单代码中的每个输入4个条目。 如果用户仅输入“健康和旅行”,则会触发一条错误消息,提示需要添加餐食和酒店记录。 这是我到目前为止所得到的:
public bool ValidateBillCode(bills billArray[][])
{
for(int i = 0; i < billArray.Length; i++)
{
for(int j = 0; j < billArray[0].Length; j++)
{
if(billArray[i][j].IndexOf("Health") >= 0 ||
billArray[i][j].IndexOf("Travel") >= 0 ||
billArray[i][j].IndexOf("Meal") >= 0||
billArray[i][j].IndexOf("Hotel") >= 0)
{
return true;
}
else
{
return false;
}
}
}
}
但是它不能确保全部四个都输入,而且我不确定如何制作一条错误消息来告诉用户缺少的四个。 我将不胜感激。
我相信您不需要任何二维或锯齿状的数组。 您需要定义一个结构,例如:
public struct Bill
{
public string Date;
public string BillCode;
public string Amount;
public string Currency;
}
然后,您的ValidateBillCode()
如下所示:
public bool ValidateBillCode(Bill[] billArray)
{
bool healthEntered = false;
bool travelEntered = false;
bool mealEntered = false;
bool hotelEntered = false;
for (int i = 0; i < billArray.Length; i++)
{
if (billArray[i].BillCode == "Health")
healthEntered = true;
else if (billArray[i].BillCode == "Travel")
travelEntered = true;
else if (billArray[i].BillCode == "Meal")
mealEntered = true;
else if (billArray[i].BillCode == "Hotel")
hotelEntered = true;
}
return healthEntered && travelEntered && mealEntered && hotelEntered;
}
但这只是一种非常简单的方法。 对于更合适的解决方案,最好使用class
而不是struct
,对于BillCode使用enum
,对于Date使用DateTime
,对于Amount使用 double
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.