0

我正在尝试读取文件,然后将值放入矩阵中。我收到输入字符串格式不正确的错误。它还有故障排除提示,“将字符串转换为 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

任何帮助,将不胜感激。先感谢您。

4

1 回答 1

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

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

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

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

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

并相应地调整矩阵。

于 2013-03-08T20:50:13.513 回答