我目前正在将数据存储到数组中。程序从文本文件中获取信息,然后使用产品名称格式化结果。问题是,如果在文本的起始行中找到了数字(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();
答案 0 :(得分:3)
if (!Int16.TryParse(storeData[0], out productID))
continue;//or do something else
正如格罗默所说,我宁愿使用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
}