我正在尝试将文本文件中的值读入数组。这是一个简单的问题,但即使我觉得我输入的代码与我书中的代码完全相同,但代码也不会在没有给出错误的情况下运行“输入字符串格式不正确” visual studio在输出托盘中显示:
'CS_TotalSales.vshost.exe' (CLR v4.0.30319: CS_TotalSales.vshost.exe): Loaded 'c:\users\dakota\documents\visual studio 2013\Projects\CS_TotalSales\CS_TotalSales\bin\Debug\CS_TotalSales.exe'. Symbols loaded.
'CS_TotalSales.vshost.exe' (CLR v4.0.30319: CS_TotalSales.vshost.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Accessibility\v4.0_4.0.0.0__b03f5f7f11d50a3a\Accessibility.dll'. Cannot find or open the PDB file.
A first chance exception of type 'System.FormatException' occurred in mscorlib.dll
我不确定上述任何意思,尽管我想知道我的书中是否有错字。下面是代码,可能导致此错误的原因是什么?
//declare array and size variables
const int SIZE = 7;
decimal[] salesArray = new decimal[SIZE];
//declare a counter
int index = 0;
try
{
//decalre and initialize a streamreader object for the sales file
StreamReader inputFile = File.OpenText("Sales.txt");
while (index < salesArray.Length && !inputFile.EndOfStream)
{
salesArray[index] = int.Parse(inputFile.ReadLine());
index++;
}
//close the file
inputFile.Close();
//add sales to listbox
foreach (int sale in salesArray)
{
salesListbox.Items.Add(sale);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
答案 0 :(得分:1)
此行是导致异常的行:
salesArray[index] = int.Parse(inputFile.ReadLine());
输入文件Sales.txt
中至少有一行无法解析为整数。也许是一个空白行,或一些额外的字符,使其成为无效的整数。也许有一个带点(不是整数)或其他东西的数字。
请改用TryParse()
方法,并检查尝试解析该行是否有错误。尝试更改此位:
int number;
while (index < salesArray.Length && !inputFile.EndOfStream)
{
if (Int32.TryParse(inputFile.ReadLine(), out number))
salesArray[index++] = number;
}