【问题标题】:FizzBuzz test case pass [closed]FizzBu​​zz 测试用例通过 [关闭]
【发布时间】:2018-03-29 13:37:22
【问题描述】:

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

我收到一个错误“并非所有代码都返回一个值,并且正在努力找出如何修复它。

我的代码如下:

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");    
}

【问题讨论】:

标签: c# fizzbuzz


【解决方案1】:

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

当使用Assert.AreEqual 进行测试时,函数PrintFizzBuzz 应该返回一些东西,在这种情况下是字符串“FizzBu​​zz”。但是,如果您使用的是 Console.WriteLine 方法,它将不会返回任何内容。 Console.Writeline 方法会将字符串打印到控制台,但控制台实际上并不是“程序”,它只是用于可视化一些事情,例如日志记录或调试。

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

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

返回字符串的一个例子是:

string SomeMethod()
{
    return "Some String"
}

【讨论】:

  • 谢谢,我现在知道哪里出错了,感谢您解释为什么我不会得到 FizzBu​​zz
【解决方案2】:

并非所有代码都返回值

意味着你的方法声明了一个返回类型而不是void,但你没有从你的方法返回任何东西。一个例子:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多