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

输入字符串格式不正确异常c#,c#,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\\fin

我已从文本文件中读取数据。我想将该文件中的数据更改为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();

    }
}
类程序
{
公共静态整数[,]省级=新整数[100100];
公共静态void()文件
{
字符串[]s=System.IO.File.ReadAllLines(“C:\\Users\\Lyn203\\Desktop\\data\\final graph.txt”);
对于(int i=0;i
和文本文件:

我建议您调用删除空条目的。换句话说,如果两个连续的选项卡之间没有值,则结果将包含空字符串。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;
 }

哪一行引发该异常?发生该异常时,
splitedArray[j].ToString()的值是多少?检查该值是否为空或不类似!然后将string.IsNullOrWhiteSpace(splitedArray[j])或int.TryParse赋值给数组。这发生在int.Parse()上。这是因为
splitedArray[j].ToString()
不是int。