将数据存储到数组中并检查它是否是有效整数

时间:2012-09-21 15:49:43

标签: c#

我目前正在将数据存储到数组中。程序从文本文件中获取信息,然后使用产品名称格式化结果。问题是,如果在文本的起始行中找到了数字(int)以外的文件,则文件会中断。具体在productID = Convert.ToInt16(storeData[0]);。如果文本文件中的第一个字符不是整数,我该如何避免破坏程序?

信息在文本文件中的显示方式:ProductID,Month和Sales

1 5 20.00

CODE

string[] productName = new string[100];
                string arrayLine;
                int[] count = new int[100];
                int productID = 0;
                double individualSales = 0;
                double[] totalSales = new double[100];
                double[] totalAverage = new double[100];

                productName[1] = "Cookies";
                productName[2] = "Cake";
                productName[3] = "Bread";
                productName[4] = "Soda";
                productName[5] = "Soup";
                productName[99] = "Other";                                      

                while ((arrayLine = infile.ReadLine()) != null)
                {


                    string[] storeData = arrayLine.Split(' ');

                    productID = Convert.ToInt16(storeData[0]);
                    individualSales = Convert.ToDouble(storeData[2]);

                    if (stateName[productID] != null)
                    {
                        count[productID] += 1;
                        totalSales[stateID] += individualSales;
                    }
                    else
                    {
                        count[99] += 1;
                        totalSales[99] += individualSales;
                    }


                }
                infile.Close();

3 个答案:

答案 0 :(得分:3)

if (!Int16.TryParse(storeData[0], out productID))
   continue;//or do something else

Int16.TryParse

正如格罗默所说,我宁愿使用int.TryParse(实际上是Int32.TryParse)......

答案 1 :(得分:1)

尝试将productID = Convert.ToInt16(storeData[0]);替换为:

if (Int16.TryParse(storeData[0], out productID))
{
     //do somthing
}

答案 2 :(得分:0)

TryParse可以帮助你:

if(Int16.TryParse(storeData[0], out productId))
{
    //do stuff
}
else
{
    //wasn't valid
}