我正在尝试读取文件,然后将值放入矩阵中。我收到一个错误,输入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
任何帮助将不胜感激。提前谢谢。
答案 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++)
并相应地调整矩阵。