2014-01-21 153 views
-1

我有一个应该有100行的文本文件。每行由一个id(001,002,003等)标识。但有时候有些线路会错过。例如:某些文本文件可能只有93行。我正在检查缺失的行。从数组c打印值#

这是我的代码。

bool[] idCheck = new bool[100]; 
for (int i = 0; i < 100; i++) 
{ 
    idCheck[i] = false; 
    for (int j = 0; j < FileIdArray.Length; j++) //FileIdArray is the list of all my Ids. 
    { 
     if (i == Convert.ToInt32(FileIdArray[j])) 
     { 
      idCheck[i] = true; 
     } 
    } 
} 
ResultBuilder.AppendLine(String.Format("*****************************************")); 
for (int i = 0; i < idCheck.Length; i++) 
{ 
    idCheck[0] = true;   
    if (idCheck[i] == false) 
    { 
     ResultBuilder.AppendLine(String.Format("Missing Id's from File 1 are {0}", i)); 
    }          
} 

我给这家O/P是这样的:

***************************************** 
Missing Id's from File 1 are 26 
Missing Id's from File 1 are 41 
Missing Id's from File 1 are 56 
Missing Id's from File 1 are 88 
Missing Id's from File 1 are 94 
Missing Id's from File 1 are 98 
Missing Id's from File 1 are 99 

我喜欢我的O/P看起来像这样:

Missing Id's from File 1 are 26,41,56,88,94,98,99. 

我意识到我把我的ResultBuilder内循环,因此我有重复。但是当我试图将i保存为一个字符串时,我收到了一个异常。

+0

你得到什么样的异常? – Scoregraphic

+0

请提供确切的例外。 –

+0

这是我正在写的一个大程序的一部分。我为我的程序发送3个参数(3个文本文件)。例外是该应用程序不拾取第一个文件。第一个文件是我正在为此执行的文件。 – Matt

回答

-1

只需使用下面的行内的for循环: -

ResetBuilder.Append(String.Format("Missing Id's from File 1 are {0}", i)) ; 
+0

我已经在我的代码中有相同的东西。感谢您花时间回答我的问题。 – Matt

1

你可以将其替换您的底部循环:

var missing = idCheck.Select((b, idx) => new { IsPresent = b, Idx = idx }) 
    .Where(p => !p.IsPresent) 
    .Select(p => p.Idx); 

string message = string.Format("Missing ids from File 1 are {0}", string.Join("," missing)); 
ResetBuilder.Apppend(message); 
0

尝试下面的代码,这将节省你的第二个循环。在第一个循环中,你会得到缺失的条目。

for (int i = 0; i < 100; i++) 
{ 
    idCheck[i] = false; 
    for (int j = 0; j < FileIdArray.Length; j++) //FileIdArray is the list of all my Ids. 
    { 
     if (i == Convert.ToInt32(FileIdArray[j])) 
     { 
      idCheck[i] = true;   
      break; 
     }  
    } 
    if(j>=100) 
    ResultBuilder.AppendLine(String.Format("Missing Id's from File 1 are {0}", i)); 
} 
0

更新您的代码:

ResultBuilder.AppendLine(String.Format("Missing Id's from File 1 are:") 

for (int i = 0; i < idCheck.Length; i++) 
{ 
    idCheck[0] = true; 

    if (idCheck[i] == false) 
    { 
     ResultBuilder.Append(String.Format("{0}", i)); 
    } 
} 
+0

我以前试过。这给了一个类似的冗余O/P。感谢您花时间回答 – Matt