2009-07-24 6 views
0

Exigences:En cas de panne de l'index du tableau fixe, comment redémarrer de manière pragmatique au début

Renvoie le nombre total de fichiers (enregistrements) pour la date. Affectez un modificateur (caractère unique A-Z 0-9) pour représenter le compte.

Info: Ce modificateur avec la date et l'heure sera utilisé pour tracer le fichier dans le système.

Solution actuelle:

[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); 
    } 

Problème: Lorsque le nombre de fichiers est supérieur à l'indice du tableau une exception est levée évidemment.

2ème test:

[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); 
    } 

Mon problème est que je dois pouvoir redémarrer au début du tableau pragmatiquement, avec sans avoir sans fin « si » les déclarations. Il est tard et mon cerveau est mort et ne peut donc pas trouver une solution raisonnable.

Toute aide est appréciée.

Répondre

1

sans perte, vous pouvez toujours utiliser modulo du nombre de fichiers sur 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

Ou, peut-être, filecountfordate% chararray.Length –

+0

donc j'ai eu la bonne solution tout au long, n'a tout simplement pas besoin de l'instruction if ... Note à moi-même: Ne pas code quand fatigué: P Merci Village :) –

+0

pour sûr @Jim J'y ai pensé mais juste copié et ..... de toute façon l'a changé. – TheVillageIdiot

Questions connexes