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;

また、マトリックスを確認する必要があります。数値x2が必要と思われる場合は、正方行列を作成しています。x座標とy座標しかありません。内部ループを次のように変更します。

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

それに応じてマトリックスを調整します。

于 2013-03-08T20:50:13.513 に答える