打印从1到100的数字,并用字符串(fizzbuzz)替换一些数字

|| 我正在尝试从此处进行fizzbuzz程序:为什么程序员不能编程? \“编写一个程序,打印从1到100的数字。但是,对于三个数字的倍数,请打印\” Fizz \“,而不是数字;对于五个数字的倍数,请打印\” Buzz \“。对于这三个数字的倍数和五个打印“ FizzBu​​zz”。
protected void btn1_Click(object sender, EventArgs e)
    {
        for (int i = 1; i < 101; i++)
        {
            if (i % 3 == 0 & i % 5 == 0)
            {
                Response.Write(\"fizzbuzz\" + \",\");
            }
            else if (i % 3 == 0)
            {
                Response.Write(\"fizz\" + \",\");
            }
            else if (i % 5 == 0)
            {
                Response.Write(\"buzz\" + \",\");
            }
            else
            {
                i = i + 0;
            }

            Response.Write(i +\",\");
        }

    }
我能够产生某种结果,例如:   1,2,fizz,3,4,buzz,5,fizz,6,7,8,fizz,9,buzz,10,11,fizz,12,13,14,fizzbuzz,15,16,17,fizz, 18,19,buzz,20,fizz,21,22,23,fizz,24,buzz,25,26,fizz,27,28,29,fizzbuzz,30,31,32,fizz,33,34,buzz, 35,fizz,36、37、38,fizz,39,依此类推。 单词fizz已打印,但未替换3,并且fizzbuzz已打印但未替换15,因此...     
已邀请:
无论是否达到if条件,您都仍在代码末尾打印
i
。 专门查看您的for循环:
for (int i = 1; i < 101; i++)         
{             
if (i % 3 == 0 & i % 5 == 0)             
{                 
Response.Write(\"fizzbuzz\" + \",\");             
}             
else if (i % 3 == 0)             
{                 
Response.Write(\"fizz\" + \",\");             
}             
else if (i % 5 == 0)             
{                 
Response.Write(\"buzz\" + \",\");             
}             
else             
{                 
i = i + 0;             
}              
Response.Write(i +\",\");   //look here you print i
} 
因此,您需要移动最后一个Response.Write(i + \“,\”);在最后的“ 3”状态。查找此类错误的最简单方法是使用调试器并调试程序。然后,您将轻松查看输出是什么。因此,一定要使用调试器并设置断点/监视,并观察发生的情况。您的代码应更改为:
  for (int i = 1; i < 101; i++)         
    {             
    if (i % 3 == 0 & i % 5 == 0)             
    {                 
    Response.Write(\"fizzbuzz\" + \",\");             
    }             
    else if (i % 3 == 0)             
    {                 
    Response.Write(\"fizz\" + \",\");             
    }             
    else if (i % 5 == 0)             
    {                 
    Response.Write(\"buzz\" + \",\");             
    }             
    else             
    {                 
    Response.Write(i +\",\");   //look here you print i
    }              
    } 
请注意,删除
i=i+1
表示您的
for
循环已经通过增加i来处理此问题。 编辑不确定这是否更容易,但这是使用lambda的另一种方法:
            List<int> t;
            t = Enumerable.Range(1, 100).ToList();

            var fizzBuzz = t.Where(num => num % 3 == 0 && num % 5 == 0);
            var fizz = t.Where(num => num % 3 == 0);
            var buzz = t.Where(num => num % 5 == 0);
            var notFizzBuzz = t.Where(num => num % 3 != 0 && num % 5 !=0);

            //print fizzBuzz elements
            Console.WriteLine(\"Printing fizzBuzz elements...\");
            foreach (int i in fizzBuzz)
                Console.WriteLine(i);

            //print fizz elements
            Console.WriteLine(\"Printing fizz elements...\");
            foreach (int i in fizz)
                Console.WriteLine(i);

            //print buzz elements
            Console.WriteLine(\"Printing buzz elements...\");
            foreach (int i in buzz)
                Console.WriteLine(i);

            //print other elements
            Console.WriteLine(\"Printing all others...\");
            foreach (int i in notFizzBuzz)
                Console.WriteLine(i);
    
尝试这些更改
protected void btn1_Click(object sender, EventArgs e)
{
    for (int i = 1; i < 101; i++)
    {
        if (i % 3 == 0 & i % 5 == 0)
        {
            Response.Write(\"fizzbuzz\" + \",\");
        }
        else if (i % 3 == 0)
        {
            Response.Write(\"fizz\" + \",\");
        }
        else if (i % 5 == 0)
        {
            Response.Write(\"buzz\" + \",\");
        }
        else
        {
            Response.Write(i +\",\");
        }           
    }
}
您的
i = i + 0
显然不起作用,因为您将i的值加0。 而且,无论if / else块的结果如何(将其放在其后),您都将数字打印到响应上,因此应将其移动到else(意味着仅在if或else if不匹配时打印) 。     
将ѭ10移入决赛     
protected void btn1_Click(object sender, EventArgs e)
{
    for (int i = 1; i < 101; i++)
    {
        if (i % 3 == 0 & i % 5 == 0)
        {
            Response.Write(\"fizzbuzz\" + \",\");
        }
        else if (i % 3 == 0)
        {
            Response.Write(\"fizz\" + \",\");
        }
        else if (i % 5 == 0)
        {
            Response.Write(\"buzz\" + \",\");
        }
        else
        {
            i = i + 0; //this is totally useless
            Response.Write(i + \",\");

        }

        //Response.Write(i +\",\"); //This will always write the number, even if you wrote fizz or buzz
    }

}
    
它的另一个简单实现:
for (int i = 1; i <= 100; i++)
        {
            Console.WriteLine((i % 3 == 0) ? ((i % 5 == 0) ? \"FizzBuzz\" : \"Fizz\") : ((i % 5 == 0) ? \"Buzz\" : i.ToString()));
        }
Console.ReadKey();
    
    public static void PrintMod3And5FromInterval(int start, int end)
    {
        if (end < start)
        {
            Console.WriteLine(\"End number should be higher than start.\");
        }
        else
        { 
            string result = \"\";
            for (int x = start; x <= end; x++)
            {
                if (x % 3 == 0)
                    result += \"fizz\";
                if (x % 5 == 0)
                    result += \"buzz\";
                if (result == \"\")
                    Console.WriteLine(x);
                else
                    Console.WriteLine(result);
                result = \"\";
            }
        }
    }
    static void Main(string[] args)
    {
        PrintMod3And5FromInterval(1, 100);
        Console.Read();
    }
    
这是我最初的解决方案...
for (let number = 1; number <= 100; number ++) {
if (number % 3 === 0 && number % 5 === 0) {
    console.log(number + \"fizzbuzz\");
} else if (number % 5 === 0) {
console.log(number + \"buzz\");
} else if (number % 3 === 0)
console.log(number + \"fizz\");
else  {
console.log(number);
}
}     
但是这个要短得多...
for (let n = 1; n <= 100; n++) {
  let output = \"\";
    if (n % 3 == 0) output += \"Fizz\";
    if (n % 5 == 0) output += \"Buzz\";
  console.log(output || n);
}
    

要回复问题请先登录注册