![](/img/trans.png)
[英]c# input string was not in a correct format (how to deal with corrupted data?)
[英]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.