输入字符串格式不正确异常c#

时间:2017-09-21 21:44:59

标签: c#

我已从文本文件中读取数据。我想将该文件中的数据更改为Int数组。我不知道为什么会这么错。

class Program
{
    public static int[,] provincial = new int[100, 100];

    public static void loadProvincial()
    {
        string[] s = System.IO.File.ReadAllLines("C:\\Users\\Lyn203\\Desktop\\data\\final-graph.txt");

        for (int i = 0; i < s.Length; ++i)
        {

            string[] splitedArray = s[i].Replace("\t","_").Split('_');

            //Console.WriteLine(splitedArray[i]);

            for (int j = 0; j < splitedArray.Length-1; ++j)
            {

                provincial[i,j] = int.Parse(splitedArray[j].ToString());
            }

        }
        Console.ReadLine();
    }

    static void Main(string[] args)
    {
        loadProvincial();

    }
}

和TextFile: http://textuploader.com/djhbe

1 个答案:

答案 0 :(得分:0)

我建议您调用删除空条目的this cheat sheet。换句话说,如果您有两个连续的选项卡,两个选项卡之间没有值,则结果将包含空字符串。该字符串不能由Int32.Parse

转换
string[] splitedArray = s[i].Replace("\t","_")
                            .Split(new char[] {'_'}, 
                             StringSplitOptions.RemoveEmptyEntries);

相反,如果您想在代码遇到空字符串时添加零,则将Int32.Parse替换为Int32.TryParse。这将允许您检查转换结果,而不会在缺少值时出现异常

 for(.....)
 {
     int value;
     Int32.TryParse(splitedArray[j], out value);
     // if conversion fails, value will be set to the default value for integers (0)
     provincial[i,j] = value;
 }