繁体   English   中英

C#二维数组以验证表单中的条目

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM