首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >输入字符串格式不正确。

输入字符串格式不正确。
EN

Stack Overflow用户
提问于 2014-11-09 02:38:17
回答 1查看 1.7K关注 0票数 0

我正在尝试将文本文件中的值读取到数组中。这是一个简单的问题,但即使我觉得自己键入的代码与我在书中的情况完全一样,如果不给出错误“输入字符串格式不对”,visual将在输出托盘中显示这一点,代码将不会运行:

代码语言:javascript
运行
复制
'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

我不知道上述任何一条是什么意思,虽然我想知道我的书中是否有错误。下面是代码,是什么导致了这个错误?

代码语言:javascript
运行
复制
 //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);
            }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-09 02:55:07

这一行是导致异常的原因:

代码语言:javascript
运行
复制
salesArray[index] = int.Parse(inputFile.ReadLine());

输入文件Sales.txt中至少有一行不能解析为整数。可能是空行,或者是一些额外的字符,使得它成为无效的整数。也许有一个带有点(而不是整数)或其他东西的数字。

使用TryParse()方法代替,并检查在试图解析行时是否有错误。试着改变这一点:

代码语言:javascript
运行
复制
int number;
while (index < salesArray.Length && !inputFile.EndOfStream)
{
     if (Int32.TryParse(inputFile.ReadLine(), out number))
        salesArray[index++] = number;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26824380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档