2013-02-25 43 views
0

這是我的問題:我想創建一個程序來檢查ATM中的錯誤,並將其與我的數據庫中保存的數據進行比較,以獲得每個機器的錯誤狀態的SMS(已解決,未解決,新)。該程序完成,它工作得很好,但墜毀,恢復條件後CompareErrs - 方法停止工作。現在它假設它返回解決的錯誤相同的新。下面是函數: - 請與條件幫助:S我如何構建完美的條件

private object[] CompareErrs(string MachineErr, string DBErr)   
    { 
     #region CompareErrs 
     object[] ToReturn = new object[2]; 

     string Errs_Solved = ""; 
     string Errs_UnSolved = ""; 
     string Errs_New = ""; 

     string[] MachineErrSplit = MachineErr.Split(' '); 
     for (int i = 0; i < MachineErrSplit.Length; i++) 
     { 
      string Seperator = " "; 
      //if (i == MachineErrSplit.Length - 1) 
      // Seperator = ""; 

      if (DBErr.Contains(MachineErrSplit[i])) 
      { 
       Errs_UnSolved += MachineErrSplit[i] + Seperator; 
      } 
      else //if (MachineErrSplit[i].Contains(DBErr)) 
      { 
       Errs_Solved += MachineErrSplit[i] + Seperator; 
      } 

      if (!DBErr.Contains(MachineErrSplit[i])) 
      { 
       Errs_New += MachineErrSplit[i] + Seperator; 
      } 
     } 

     ToReturn[0] = new string[3] { Errs_Solved, Errs_UnSolved, Errs_New }; 
     ToReturn[1] = MachineErr; 
     return ToReturn; 

     #endregion 
    } 
+0

什麼是預期的輸出? – Aditi 2013-02-25 08:51:55

+0

由於崩潰,你的意思是,它拋出一個異常?你能提供一些細節嗎?而且,如果'DBErr'只包含「未解決的」錯誤,你是否也應該有一個「已解決」的錯誤列表?另外,將錯誤列表存儲在單個字符串中是一個非常糟糕的主意。 – Groo 2013-02-25 08:52:33

+0

否不是一個例外,但正如你在你的評論中所說的那樣,Solved和新錯誤都是相同的,我現在需要的是獲得正確的條件 – 2013-02-25 08:57:20

回答

1
else //if (MachineErrSplit[i].Contains(DBErr)) 
{ 
    Errs_Solved += MachineErrSplit[i] + Seperator; 
} 

if (!DBErr.Contains(MachineErrSplit[i])) 
{ 
    Errs_New += MachineErrSplit[i] + Seperator; 
} 

這兩個是相同的......分配相同的價值,不同的變量。

因爲,中

if (DBErr.Contains(MachineErrSplit[i])) 

其他條件相同

if (!DBErr.Contains(MachineErrSplit[i]))