How can i reudce the number if if statments to 2

时间:2017-06-20 12:34:16

标签: c#

how do I reduce the number of if statements in this code

for (int i = 1; i < number;i++)
{

    if ( i % 3 == 0 && i % 5 != 0)
    {
        Console.WriteLine(i + " Fizz");
    }
    else if (i % 5 == 0 && i % 3 != 0)
    {
        Console.WriteLine(i + " Buzz");
    }
    else if(i % 3 == 0 && i % 5 == 0)
    {
        Console.WriteLine(i + " FizzBuzz");
    }

    else
    {
        Console.WriteLine(i);
    }
}

7 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

for (int i = 1; i < number;i++)
{
    Console.WriteLine(string.Format("{0} {1}{2}", i, i % 3 == 0 ? "Fizz":"", i % 5 == 0 ? "Buzz":"");
}

如果是,则使用否; - )

答案 1 :(得分:2)

$Query->bindParam(4, $Data["PublicationDate"] ?: null);
$Query->bindParam(5, $Data["ExpirationDate"] ?: null);

这会显示例如for (int i = 1; i < number;i++) { string result = i + " "; if ( i % 3 == 0) { result += "Fizz"; } if (i % 5 == 0) { result += "Buzz"; } Console.WriteLine(result); } 1_3 Fizz5 Buzz

请参阅下面的javascript等效代码段:

&#13;
&#13;
15 FizzBuzz
&#13;
&#13;
&#13;

答案 2 :(得分:1)

变量和conditional operator可以帮助提高代码的可读性:

for (int i = 1; i < number;i++)
{
    bool isMod3 = i % 3 == 0;
    bool isMod5 = i % 5 == 0;
    string fizz = isMod3 ? "Fizz" : "";
    string buzz = isMod5 ? "Buzz" : "";
    string result = $"{i} {fizz}{buzz}";
    Console.WriteLine(result);
}

这是另一种可以处理更多值的方法(理论上是无限制的):

var modDict = new Dictionary<int, string> { { 3, "Fizz" }, { 5, "Buzz" } };
for (int i = 1; i < number; i++)
{
    string text = string.Join("", modDict.Select(kv => i % kv.Key == 0 ? kv.Value : ""));
    Console.WriteLine(i + " " + text);
}

答案 3 :(得分:0)

你可以尝试条件运算符。

(i % 3 == 0)
? (i % 5 == 0)
  ? Console.WriteLine(i + " FizzBuzz")
  : Console.WriteLine(i + " Fizz");
: (i % 5 == 0)
  ? Console.WriteLine(i + " Buzz");
  : Console.WriteLine(i);

答案 4 :(得分:0)

  string output = i % 3 == 0
                    ? ( i % 5 != 0 ? $"{i} Fizz" : $"{i} FizzBuzz" )
                    : i % 5 == 0 && i % 3 != 0
                        ? $"{i} Buzz"
                        : i.ToString();
  Console.WriteLine( output );

答案 5 :(得分:0)

尝试:

string str;
for (int i = 1; i < number; i++)
{
    str = i + " ";
    if (i % 3 == 0)
        str += "Fizz";
    if (i % 5 == 0)
        str += "Buzz";

    Console.WriteLine(str.Trim());
}

答案 6 :(得分:0)

我们可以像下面这样做,但它对可读性不好

for (int i = 1; i < number; i++)
        {
            var x = i % 3 == 0;
            var y = i % 5 == 0;

            string istr = i.ToString();
            string a = x ? (y ? istr + " FizzBuzz"
                                : istr + " Fizz")
                          : (y ? istr + " Buzz"
                                : istr);
            Console.WriteLine(a);
        }
相关问题