2014-01-21 228 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