每个用户都需要填写一个表格,它有4个字段:日期,账单代码,金额和货币。账单代码有一个下拉菜单,其中包含许多选项,其中 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
,使用enum
表示BillCode,DateTime
表示日期,double
表示金额。