【发布时间】:2018-09-06 17:18:26
【问题描述】:
是否可以使用 switch 构造在 C# 中创建 FizzBuzz 解决方案。我找到了适用于 JavaScript 和其他语言的解决方案,但这些(或等效的语法)似乎不适用于 C#。
作为参考,我将 if 语句版本写在下面:
for (int x = 1; x <= 15; x++)
{
if (x % 5 == 0 && x % 3 == 0)
Console.WriteLine("FizzBuzz");
else if (x % 5 == 0)
Console.WriteLine("Buzz");
else if (x % 3 == 0)
Console.WriteLine("Fizz");
else
Console.WriteLine(x);
}
Console.ReadLine();
编辑:忘记放我的 switch 语句代码,对此感到抱歉:
for (x = 1; x <= 15; x++)
{
switch (x)
{
case (x % 3 == 0 && x % 5 == 0):
Console.WriteLine("FizzBuzz");
break;
case (x % 5 == 0):
Console.WriteLine("Buzz");
break;
case (x % 3 == 0):
Console.WriteLine("Fizz");
break;
default:
Console.WriteLine(x);
break;
}
}
我的问题是模数语句。错误是“无法将类型 bool 隐式转换为 int。我尝试将 switch (x) 替换为 switch (true) 但这并没有多大帮助,只是将错误更改为我的每个案例的“预期值为常量”。
【问题讨论】:
-
如果它适用于
if,它适用于switch,请向我们展示您尝试过的开关的代码。 -
网上有很多这样的例子,因为这是一个通用的编程难题。
-
提示:以
switch(x%15)开头。现在最多只有15个案例。他们是谁? -
@WilomGfx 这种说法在一般情况下是不正确的。您可以使用
if执行某些逻辑,而使用switch则无法执行此操作,即使使用新的模式匹配也是如此。 -
switch的参数和case的参数必须解析为相同的类型。您正在“切换”int,然后封装bool
标签: c# switch-statement fizzbuzz