弗洛伊德三角形作为一种方法

时间:2018-10-30 17:06:53

标签: c# methods

我如何将我的代码放入方法中,因为它现在有一个错误并且我不知道如何解决它。在我们的考试中,我们必须将所有练习都放到一个方法中,但是现在它说“当我尝试返回类型时,不能将类型'int'隐式转换为'string'(下划线'n')。

    public string FloydsTriangle(int n)
    {
        Console.Write("Enter a number: ");
        int num = Convert.ToInt32(Console.ReadLine());
        int count = 1;

        for (int i = num; i > 0; i--)
        {
            for (int j = num; j >= i; j--)
            {
                Console.Write(count + " ");
                count++;
            }
            Console.WriteLine();
        }
        Console.ReadLine();

        return n;
    }

2 个答案:

答案 0 :(得分:1)

当前,您的代码没有多大意义,因为您有一个方法接受int,但不执行任何操作,然后返回string,这是相同的int用户传入仅转换为字符串(假设您将.ToString()添加到返回值中,如其他答案中所述)。

实现此目的的一种方法是使用int参数作为三角形的基础,然后返回三角形的字符串表示形式(而不是在此方法内部的控制台中读取或写入任何内容) )。

注意,我没有纠正您现有的任何代码-我只更改了该方法如何使用输入参数以及如何输出结果:

public static string GetFloydsTriangle(int n)
{
    int count = 1;

    // Instead of writing strings to the console, we'll
    // store them in this string and return it at the end
    string triangle = string.Empty;

    for (int i = n; i > 0; i--)
    {
        for (int j = n; j >= i; j--)
        {
            triangle = triangle + count + " ";
            count++;
        }

        triangle = triangle + Environment.NewLine;
    }

    return triangle;
}

然后,要使用该方法,我们将在Main方法中要求用户输入数字,然后将其传递给我们的方法。另外,我们将从三角形方法(这是我们的三角形字符串)中获取返回值,并使用Main方法将该字符串写入控制台。

这是编写帮助程序方法的一种非常标准的方法-它仅基于输入数据进行一些计算并返回结果(它不与用户或UI交互)。

同样,我不会更正您的代码,只是将其重构为使用新方法:

static void Main(string[] args)
{
    Console.Write("Enter a number: ");
    int num = Convert.ToInt32(Console.ReadLine());

    string triangle = GetFloydsTriangle(num);
    Console.WriteLine(triangle);

    Console.Write("\nDone! Press any key to exit...");
    Console.ReadKey();
}

答案 1 :(得分:0)

您的方法指定您将传回string。您将想要做类似的事情:

return n.toString();

否则,您需要将方法更改为:

public int FloydsTriangle(int n)