1

每个用户都需要填写一个表格,它有 4 个字段:日期、账单代码、金额和货币。账单代码有一个下拉菜单,其中包含许多有效的 4 个选项(健康、旅行、膳食、酒店)。账单代码字段不能留空,只能选择这4个选项之一。用户使用 4 个帐单代码中的每一个输入 4 个条目。如果用户仅输入 Health and Travel,则会触发一条错误消息,提示需要添加 Meal 和 Hotel 记录。这是我到目前为止得到的:

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;
            }
        }
    }
}   

但它不能确保所有这四个都输入了,而且我不确定如何制作一条错误消息来告诉用户缺少四个中的哪一个。我将不胜感激这方面的任何帮助。

4

1 回答 1

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使用enumBillCode 、DateAmountDateTimedouble

于 2018-09-11T14:36:19.653 回答