理解C#中的fizz嗡嗡声

scy*_*lla 0 .net c# fizzbuzz modulo

当使用"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);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是如果我编写代码来首先过滤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);
    }
}
Run Code Online (Sandbox Code Playgroud)

最终结果没有3和5的fizz-buzz倍数

Dar*_*ren 6

因为它满足前两个条件.所以它永远不会打到你的第三个声明.