C# 输入的格式不正确

C# 输入的格式不正确,c#,exception,file-io,type-conversion,runtime-error,C#,Exception,File Io,Type Conversion,Runtime Error,我试图读入一个文件,然后将值放入一个矩阵中。我收到一个错误,输入的sting格式不正确。它还有故障排除提示,将字符串转换为DateTime时,在将每个变量放入DateTime对象之前,先解析字符串以获取日期。这很奇怪,因为我甚至没有在任何地方使用DateTime。下面是我的代码。我肯定我错过了一些愚蠢的事情。如果我忘记了你需要查看的代码的任何部分,请告诉我 代码(C#): 任何帮助都将不胜感激。先谢谢你 matrix[i, j] = int.Parse(line[index].ToString(

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

代码(C#):

任何帮助都将不胜感激。先谢谢你

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++)
for(int j=0;j<2;j++)

并相应地调整矩阵

由于此代码在任何地方都没有对
DateTime
的引用,也没有进行任何此类解析,因此它不是错误的原因。检查异常的实际来源。可能来自
int.Parse
调用。确切的消息是什么?哪条线路故障?输入文件是什么样子的?(我假设它在运行时失败了。)对不起,我应该说得更清楚。PhoenixReborn是正确的,它来自int.Parse行。它在运行时失败了。确切的信息是我在问题“input sting的格式不正确”中写的,它似乎是以书面形式读取的,但在尝试解析它时抛出了错误。正在解析的字符串的内容是什么?现在我得到了:“startIndex不能大于字符串的长度。”你跑得太快了。尝试在调试中运行,并逐步完成程序。当你得到错误时,看看索引会变成什么。你的文本文件中有1000个城市吗?是的,我有。我想出来了。简单的错误。你做这件事的方式非常有效。谢谢大家!!您可能希望使用Split()将数字分解为单个项目,而不是将索引转换为字符串。
matrix[i, j] = int.Parse(line.substring(index,2).Trim());
index += 5;
for (int j = 0; j < 2; j++)