阅读编码恐怖,我又一次遇到了 FizzBuzz。
原帖在这里:编码恐怖:为什么程序员不能……编程?
对于那些不知道的人: FizzBuzz 是一款非常受欢迎的儿童游戏。从 1 数到 100,每当一个数字能被 3 整除时,就调用字符串“Fizz”,每当一个数字能被 5 整除时,就调用字符串“Buzz”,每次一个数字都能被 3 和 5 整除时串在一起的“FizzBuzz”被调用而不是数字。
这一次,我写了代码,花了我一分钟,但有几件事我不喜欢。
这是我的代码:
public void DoFizzBuzz()
{
var combinations = new Tuple<int, string>[]
{
new Tuple<int, string> (3, "Fizz"),
new Tuple<int, string> (5, "Buzz"),
};
for (int i = 1; i <= 100; ++i)
{
bool found = false;
foreach (var comb in combinations)
{
if (i % comb.Item1 == 0)
{
found = true;
Console.Write(comb.Item2);
}
}
if (!found)
{
Console.Write(i);
}
Console.Write(Environment.NewLine);
}
}
所以我的问题是:
- 如何摆脱找到的布尔值?
- 有没有比 foreach 更好的测试方法?