0

我是 C# 新手。我一直在尝试读取缺少数据的数据集。阅读标题后,我使用以下方法阅读文件的其余部分:

List<int> idList = new List<int>();
List<int[]> valList = new List<int[]>();
string line = sr.ReadLine();
while (line != null)
{
    string[] lineParts = line.Split(delimiters);
    int id = Convert.ToInt32(lineParts[0]);
    idList.Add(id);

    int[] vals = new int[numTests];
    for (int i = 0; i < numTests; i++)
    {
        vals[i] = Convert.ToInt32(lineParts[i + 1]);
    }
    valList.Add(vals);
    line = sr.ReadLine();
}
childIDs = idList.ToArray();
int[][] values = valList.ToArray();

运行此程序时,我收到错误消息“输入字符串的格式不正确”。我不太清楚如何读取丢失的数据。有什么建议么?谢谢

4

2 回答 2

0

您可以使用可为空的整数来跟踪是否缺少数据。此外,请考虑使用 int.TryParse 而不是 Convert.ToInt32 以避免 InvalidFormatException。例子:

List<int> idList = new List<int>();
List<int?[]> valList = new List<int?[]>();
string line;
while (null != (line = sr.ReadLine()))
{
    string[] lineParts = line.Split(delimiters);
    int id = Convert.ToInt32(lineParts[0]);
    idList.Add(id);

    int?[] vals = new int?[numTests];
    for (int i = 0; i < numTests; i++)
    {
        int parsed;
        if (!int.TryParse(lineParts[i + 1], out parsed))
            vals[i] = null;
        else
            vals[i] = parsed;
    }
    valList.Add(vals);
    line = sr.ReadLine();
}
childIDs = idList.ToArray();
var values = valList.ToArray();
于 2013-02-08T17:14:10.803 回答
0

“输入的字符串格式不正确”意味着您正在尝试从无意义的字符串中解析一个 int。

例如:

Convert.ToInt32("the letter q"); // this will throw that exception.
于 2013-02-08T17:07:33.747 回答