【发布时间】:2013-05-17 14:32:26
【问题描述】:
当使用“while”循环在 C# 中解决“fizz-buzz”时,我发现首先我应该找到 3 和 5 的倍数(15 的倍数),然后找到 3 和 5 的倍数,例如以下。
int myval = 0;
while (myval < 100)
{
myval = myval + 1;
if (myval % 15 == 0)
{
listBox1.Items.Add("fizzbuzz");
}
else if (myval % 3 == 0)
{
listBox1.Items.Add("fizz");
}
else if (myval % 5 == 0)
{
listBox1.Items.Add("buzz");
}
else
{
listBox1.Items.Add(myval);
}
}
但是,如果我先编写代码来过滤 3 和 5 的倍数,然后像下面一样转到 3 和 5 的倍数(15 的倍数),最终结果只会显示嘶嘶声(3 的倍数)和嗡嗡声( 5 的倍数)没有嘶嘶声(3 和 5 的倍数)。有谁知道这是什么原因,即使 IDE 也没有显示任何错误。
myval = 0;
while (myval < 100)
{
myval = myval + 1;
if (myval % 3 == 0)
{
listBox1.Items.Add("fizz");
}
else if (myval % 5 == 0)
{
listBox1.Items.Add("buzz");
}
else if (myval % 15 == 0)
{
listBox1.Items.Add("fizzbuzz"); // for multiples of both 3 and 5
}
else
{
listBox1.Items.Add(myval);
}
}
【问题讨论】:
-
代码按预期运行。由于您使用的是 else if,因此您不允许多个逻辑决策。
-
你能解释一下如何仅通过更改“if statements”来正确编写它
-
@scylla 我相信您能够自己阅读和理解下面的许多答案,不是吗?如果没有,我们还应该告诉你什么?
-
我非常感谢所有帮助我的用户。我刚刚从您那里学到了几种完成相同任务的新方法。但作为一个编程初学者,我想如果我以自己的方式纠正我在这段代码中犯的错误,而不是完全编写新代码,会更好。