簡體   English   中英

讀取丟失的數據C#輸入字符串格式不正確

[英]reading in missing data c# input string was not in a correct format

我是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();

運行此命令時,出現錯誤消息“輸入字符串的格式不正確”。 我不太清楚如何讀取丟失的數據。 有什么建議么? 謝謝

“輸入字符串格式不正確”表示您正在嘗試從無意義的字符串中解析一個整數。

例如:

Convert.ToInt32("the letter q"); // this will throw that exception.

您可以使用可為空的整數來跟蹤是否缺少數據。 另外,請考慮使用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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM