Треугольник Флойдса как метод - PullRequest
0 голосов
/ 30 октября 2018

Как я могу поместить свой код в метод для работы, потому что теперь у него есть ошибка, и я не могу понять, как ее решить. В нашем экзамене мы должны поместить каждое упражнение в метод, но теперь он говорит: «Не удается выполнить простое преобразование типа 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 голосов
/ 30 октября 2018

В настоящее время ваш код не имеет большого смысла, так как у вас есть метод, который принимает 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.

Это довольно стандартный способ написания вспомогательного метода - он просто выполняет некоторые вычисления на основе входных данных и возвращает результат (он не взаимодействует с пользователем или пользовательским интерфейсом).

Опять же, я не исправляю ваш код, а просто изменяю его для использования нового метода:

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();
}
0 голосов
/ 30 октября 2018

Ваш метод указывает, что вы будете возвращать string. Вы хотите сделать что-то вроде:

return n.toString();

В противном случае вам нужно изменить ваш метод на:

public int FloydsTriangle(int n)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...