每个用户都需要填写一种表格,该表格有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;
}
}
}
}
但是它不能确保全部四个都输入,而且我不确定如何制作一条错误消息来告诉用户这四个丢失了。我将不胜感激。
答案 0 :(得分:0)
我相信您不需要任何二维或锯齿状的数组。您需要定义以下结构:
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
,对于使用DateTime
日期和double
表示金额。