我尝试在C#中创建一个FizzBuzz代码,但它给我的错误代码是我错过了某个“,”但是我无法找到它放在哪里 另外我知道代码中还有其他底层程序我只需要修复这个程序,所以我可以编译并修复它们
using System;
namespace ConsoleApp5
{
class Program
{
static void Main(string[] args)
{
float i = 0;
if (i != 101)
{
i = i + 1;
float i3 = i / 3;
float i5 = i / 5;
float i15 = i / 15;
string Print = Convert.ToString(i)
else ; if ((i3 %1) > 0)
{
string Hold = ("Fizz");
Print = Hold;
}
else if ((i3 % 1) > 0)
{
string Hold = ("Buzz");
Print = Hold;
}
else if ((i15 % 1) > 0)
{
string Hold = ("FizzBuzz");
Print = Hold;
}
Console.WriteLine(Print)
; Console.WriteLine("Done");
Console.ReadLine();
}
}
}
}
答案 0 :(得分:3)
Fizz-Buzz最初是一款旨在教育儿童师的游戏,它的工作原理如下:
指定先行的玩家说出数字“1”,每个玩家依次计算一个数字。但是,任何可被3整除的数字都会被fizz这个词所取代,而任何可以被嗡嗡声这个词整除的数字。被两者整除的数字会成为嘶嘶声。
所以你的程序有很多错误,首先是你使用if
进行循环。您的第一个if
声明:
if (i != 101)
{ ... }
真的没有做任何事情。您在上一个语句中设置了i=0
,因此i
永远不会等于101
。您需要做的是while
循环:
float i = 0.0f;
while (i < 101.0f)
{
//Run the program
}
您遇到的下一个问题是,对于迭代器可以使用i
,如果迭代维度,则可以使用x
或y
,但这确实是单字母变量的位置应该停下来使用有意义的名称,它会使事情变得更容易:
因此,我们需要再次检查i
是否可以被3,5或两者整除。我们可以用简单的布尔变量做到这一点,不需要让事情变得更复杂。
bool divisibleBy3 = i % 3.0f == 0.0f;
bool divisibleBy5 = i % 5.0f == 0.0f;
接下来你错了的是你在陌生的地方有;
,也就是说你似乎把它们分开来了。尽量不要这样做。 ;
不应该在每个代码行的末尾,并且每行应该只有一个。所以这个:
string Print = Convert.ToString(i)
else ; if ((i3 %1) > 0)
是一个错误,因为它将所有内容视为一行,直到它到达;
,因此您的代码确实变为:
string Print = Convert.ToString(i) else;
if (...)
应该很清楚问题是什么。
我要触及的最后一个问题确实不是代码问题,而是形式问题。你有很多“持有”变量没有做任何事情,只是暂时把东西放在其他地方然后把它们放在其他地方,比如:
if ((i3 %1) > 0)
{
string Hold = ("Fizz");
Print = Hold;
}
Hold
的目的是什么?你可以写:
Print = "Fizz";
(
和)
也是不必要的。因此,让我们学习所有这些课程,并将它们纳入Fizz-Buzz计划:
int i = 0; //No reason to use float here, int is just fine
while (i <= 100)
{
bool divisibleBy3 = i % 3 == 0;
bool divisibleBy5 = i % 5 == 0;
if (divisibleBy3 && divisibleBy5)
Console.WriteLine("FizzBuzz");
else if (divisibleBy3)
Console.WriteLine("Fizz");
else if (divisibleBy5)
Console.WriteLine("Buzz");
else
Console.WriteLine(i.ToString());
i += 1;
}
Console.WriteLine("Done");
Console.ReadKey(true);
或者,它可以使用for
循环编写:
for (int i = 0; i <= 100; i++)
{
bool divisibleBy3 = i % 3 == 0;
bool divisibleBy5 = i % 5 == 0;
if (divisibleBy3 && divisibleBy5)
Console.WriteLine("FizzBuzz");
else if (divisibleBy3)
Console.WriteLine("Fizz");
else if (divisibleBy5)
Console.WriteLine("Buzz");
else
Console.WriteLine(i.ToString());
}
Console.WriteLine("Done");
Console.ReadKey(true);
因此,您可以看到如何为变量提供有意义的名称,注意缩进/格式化以及理解;
可以帮助您更轻松地进行调试。清晰,格式良好的代码易于阅读和调试,并且为变量提供有意义的名称意味着您可以在不必阅读整个变量使用的情况下了解其目的是什么。
注意:一些程序员会争辩说Fizz-Buzz可以缩减为1-3行代码。虽然有可能,但我认为它并没有表现出良好的编程实践。可以维护的可读代码之间存在很大差异,并且为了缩短它而只是做一些简短的事情。