输入格式不正确

时间:2013-03-08 20:26:09

标签: c# exception file-io type-conversion runtime-error

我正在尝试读取文件,然后将值放入矩阵中。我收到一个错误,输入sting格式不正确。它还有故障排除提示,“当将字符串转换为DateTime时,解析字符串以在将每个变量放入DateTime对象之前获取日期。这很奇怪,因为我甚至没有在任何地方使用DateTime。下面是我的代码。我我确定我错过了一些愚蠢的事情。如果我忘记了你需要看的代码的任何部分,请告诉我。

代码(C#):

class Program
{
    private static string line;
    private static int[,] matrix;
    private static int numOfCities;
    private static int startCity;
    private static int[] greedyPath;
    private static int greedyRecursionCount;
    private static int total;
    private static int lowerBoundTotal;
    private static string filename = "points.txt";

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

        getStartCity();

        greedyStart();

        totalTour();

        lowerBound();

        compareAll();

        Console.ReadKey();

    }

    private static void readTxtFile()
    {
        numOfCities = 0;
        TextReader tr = new StreamReader(filename);
        numOfCities = int.Parse(tr.ReadLine().Trim());

        line = "1";
        int index = 0;
        matrix = new int[numOfCities,numOfCities];

        for (int i = 0; i < numOfCities; i++)
        {

            line = tr.ReadLine();

            for (int j = 0; j < numOfCities; j++)
            {

                matrix[i, j] = int.Parse(line[index].ToString().Trim());
                index = index + 2;

            }//end inner for loop
            index = 0;

        }//end outer for loop

        tr.Close();
    }
}

档案内容:

1000 //Number of points that are in the file
16   11 //XY-Points that are separated by 3 spaces
10   45
29   47

任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:0)

matrix[i, j] = int.Parse(line[index].ToString().Trim()); 

没有做你认为应该做的事情。你将第一个字符转换为字符然后字符串然后修剪然后解析。因此,您的第一次转换将为1,然后当它尝试转换“”时它将失败。您正在寻找:

matrix[i, j] = int.Parse(line.substring(index,2).Trim());
index += 5;

您还需要查看矩阵。你正在创建一个方形矩阵,当它看起来需要一个数字x 2.你只有一个x和y坐标。将内循环更改为:

for (int j = 0; j < 2; j++)

并相应地调整矩阵。