FizzBu​​zz 测试用例通过

FizzBuzz test case pass

我想知道有人可以告诉我这个 FizzBu​​zz 哪里出了问题。

我得到一个错误“不是所有代码 returns 一个值并且正在努力找出如何修复它。

我的代码如下:

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

测试用例是这样的:

[Test]
public void Test1()
{
    var solution = new Solution();

    Assert.AreEqual(solution.PrintFizzBuzz(15), "FizzBuzz");    
}

not all code returns a value

意味着你的方法声明了 return 类型而不是 void 但你没有从你的方法中 returning 任何东西。案例一:

int Add(int a, int b)
{
  int c = a + b;
  // no return specified would through the same error
}

首先,正如其他人所说,并非所有代码都存在,因此我们很难提供帮助。不过我还是会试试的。

当用 Assert.AreEqual 测试时,函数 PrintFizzBuzz 应该 return 一些东西,在本例中是字符串 "FizzBuzz"。但是,如果您使用 Console.WriteLine 方法,它将 return 什么都没有。 Console.Writeline 方法会将字符串打印到控制台,但控制台实际上不是 'program',它只是用于可视化一些事情,例如日志记录或调试。

所以要解决您的问题,您应该使用 return 而不是 Console.Writeline 并让您的方法 PrintFizzBuzz return 一个字符串而不是将其作废并将其打印到控制台.在这种情况下重命名您的方法可能也更好,因为它不再打印 FizzBu​​zz。

您的代码还有另一个问题,那就是当您输入 15 时,它会打印出 "Fizz",因为您所做的支票是模 3 和 15 % 3 = 0。您应该反过来订购支票, 从具体到不太具体。

returning 字符串的示例是:

string SomeMethod()
{
    return "Some String"
}