要求:
返回日期的文件(记录)总数。 指定一个修饰符(单个字符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”语句。它已经晚了,我的大脑已经死了,因此无法找到合理的解决方案。
感谢任何帮助。
答案 0 :(得分: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);
}