2009-07-24 15 views
0

要求:當固定陣列的索引如何在開始時務實重新啓動

返回日期的文件(記錄)的總計數。 指定修飾符(單個字符A-Z 0-9)以表示計數。

信息: 該修飾符和日期/時間將用於跟蹤整個系統中的文件。

當前的解決方案:

[Test] 
    public void FileIDModifierShouldReturn9() 
    { 
     var filecountfordate = 35; 
     var chararray = new[]{ 
           'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R' 
           , 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', 
           '9' 
          }; 

     var expected = "9"; 
     var actual = chararray[filecountfordate].ToString(); 

     Assert.AreEqual(expected, actual); 
    } 

問題: 當文件計數大於陣列的異常明顯拋出的指數越大。

第二場測試:

[Test] 
    public void WhenFileIDModifierIsBiggerThanArrayArrayShouldStartOverAndReturnValue() 
    { 
     var filecountfordate = 71; 
     var chararray = new[]{ 
           'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R' 
           , 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', 
           '9' 
          }; 
     if (filecountfordate > 35) 
     { 
      filecountfordate = filecountfordate%36; 
     } 

     var expected = "9"; 
     var actual = chararray[filecountfordate].ToString(); 

     Assert.AreEqual(expected, actual); 
    } 

我的問題是我需要能夠在陣列的開始務實地重新啓動,具有無窮的了「if」語句。它遲到了,我的大腦已經死了,因此無法想出一個合理的解決方案。

任何幫助表示讚賞。

回答

1

沒有任何損失,你總是可以超過36

[Test] 
public void WhenFileIDModifierIsBiggerThanArrayArrayShouldStartOverAndReturnVal() 
{ 
    var filecountfordate = 71; 
    var chararray = new[]{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 
     'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 
     'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', 
          '9' 
         }; 

    filecountfordate = filecountfordate % chararray.Length; 


    var expected = "9"; 
    var actual = chararray[filecountfordate].ToString(); 

    Assert.AreEqual(expected, actual); 
} 
+2

使用模文件計數或者,也許,filecountfordate%chararray.Length – 2009-07-24 03:56:22

相關問題