我必须写一个循环,返回"Fizz"如果一个数字是3的倍数并且"嗡嗡";如果它是一组特定数字(这里是15到22之间的数字)之间的5的倍数。当我执行代码时,它只循环一次,并且只返回"Fizz"而15是3和5的倍数。我如何解决这个问题?它需要打印出是3的倍数、5的倍数或两者都是的数字,并告诉它是fizz、buzz还是两者都是谢谢你,
class Program
{
static void Main(string[] args)
{
Console.WriteLine(FizzBuzz(15, 22));
}
static string FizzBuzz(int première, int dernière)
{
string message = "";
if (première < dernière)
{
while (première <= dernière)
{
if ( EstDivisiblePar3(première) )
{
message = "Fizz";
return message;
}
if (EstDivisiblePar5(première))
{
message = "Buzz";
return message;
}
première = première + 1;
}
}
else
{
message = "« Incohérence des paramètres de FizzBuzz ».";
}
return message;
}
static bool EstDivisiblePar3(int première)
{
return (première % 3) == 0;
}
static bool EstDivisiblePar5(int première)
{
return (première % 5) == 0;
}
}
把它分成几个部分!(这是有效编程的关键)
首先编写一个方法,确定数字显示哪个字符串。
static string GetString(int n)
{
if (EstDivisiblePar3(n) && !EstDivisiblePar5(n))
{
return "Fizz";
}
if (!EstDivisiblePar3(n) && EstDivisiblePar5(n))
{
return "Buzz";
}
if (EstDivisiblePar5(n) && EstDivisiblePar3(n))
{
return "Fizz Buzz";
}
return n.ToString();
}
现在你的主程序非常简单:
static void FizzBuzz(int première, int dernière)
{
for ( n = première; n <= dernière; n++ )
{
var message = GetMessage(n);
Console.WriteLine(message);
}
}
一种简单的方法是构建一个列表并返回它:
static List<string> FizzBuzz(int première, int dernière)
{
List<string> messages = new List<string>();
if (première < dernière)
{
while (première <= dernière)
{
bool estDivisiblePar3 = EstDivisiblePar3(première);
bool estDivisiblePar5 = EstDivisiblePar5(première);
if (estDivisiblePar3 && estDivisiblePar5)
{
messages.Add("FizzBuzz");
}
else if (estDivisiblePar3)
{
messages.Add("Fizz");
}
else if (estDivisiblePar5)
{
messages.Add("Buzz");
}
première = première + 1;
}
}
else
{
messages.Add("« Incohérence des paramètres de FizzBuzz ».");
}
return messages;
}
然后可以像这样循环:
foreach (string message in FizzBuzz(15, 22))
{
Console.WriteLine(message);
}
我还建议用for
环替换您的while
环:
for (int i = première; i <= dernière; ++i)
{
bool estDivisiblePar3 = EstDivisiblePar3(i);
bool estDivisiblePar5 = EstDivisiblePar5(i);
if (estDivisiblePar3 && estDivisiblePar5)
{
messages.Add("FizzBuzz");
}
else if (estDivisiblePar3)
{
messages.Add("Fizz");
}
else if (estDivisiblePar5)
{
messages.Add("Buzz");
}
}
上网试试
static string FizzBuzz(int première, int dernière)
{
string message = "";
string message2 = "";
string message3 = "";
string rien = "";
if (première < dernière)
{
while (première <= dernière)
{
if (EstDivisiblePar3(première) && !EstDivisiblePar5(première))
{
message = "Fizz";
Console.WriteLine($"{première} --- {message}");
}
if (EstDivisiblePar5(première) && !EstDivisiblePar3(première))
{
message2 = "Buzz";
Console.WriteLine($"{première} --- {message2}");
}
if(EstDivisiblePar3(première) && EstDivisiblePar5(première))
{
message3 = "FizzBuzz";
Console.WriteLine($"{première} --- {message3}");
}
première = première + 1;
}
}
else
{
message = "« Incohérence des paramètres de FizzBuzz ».";
}
return rien;
}
static bool EstDivisiblePar3(int première)
{
return (première % 3) == 0;
}
static bool EstDivisiblePar5(int première)
{
return (première % 5) == 0;
}
请像这样修复你的代码:
static string FizzBuzz(int première, int dernière)
{
string message = "";
if (première < dernière)
{
while (première <= dernière)
{
if (EstDivisiblePar3(première))
{
message += "Fizz";
}
if (EstDivisiblePar5(première))
{
message += "Buzz";
}
première = première + 1;
}
}
else
{
message = "« Incohérence des paramètres de FizzBuzz ».";
}
return message;
}