Невозможно распечатать весь список на консоль - PullRequest
0 голосов
/ 10 октября 2018

Продолжайте получать следующее сообщение при печати списка на консоли.

System.Collections.Generic.List`1[System.Int32]

Это код консоли.Он предназначен для генерации последовательности Фибоначчи заданной длины.Я пытался использовать метод ToString (), но это тоже не работает.Я построил алгоритм на Java, так что я знаю, что проблема, по сути, является проблемой C #.Проблема решается, если при печати я распечатываю элементы списка по отдельности, но не могу распечатать весь список.

class Program
{
    public static void Main(string[] args)
    {
        Fibonacci fibo = new Fibonacci();


        Console.WriteLine(fibo.getSequence(9));

        Console.ReadLine();
    }
}

class Fibonacci
{

    public List<int> getSequence(int length)
    {
        List<int> results = new List<int>();

        results.Add(1);
        results.Add(1);

        int counter = 0;

        while (counter != length - 2)
        {
            int num1 = results[results.Count - 1];
            int num2 = results[results.Count - 2];

            results.Add(num1 + num2);
            counter++;
        }

        return results;
    }
}

Ответы [ 3 ]

0 голосов
/ 10 октября 2018

Вы возвращаете List<int>.Чтобы напечатать его, вы должны, например, перебрать его

foreach(var i in fibo.getSequence(9)) {
    Console.WriteLine(i);
}

Или вы можете использовать String.Join()

Console.WriteLine(String.Join(" ", fibo.getSequence(9)));
0 голосов
/ 10 октября 2018

Вы пытаетесь распечатать объект напрямую в консоль, попробуйте выполнить итерации по списку и распечатать их, где бы вы ни находились.

for (var item in returned) 
   Console.WriteLine(item)

при использовании пользовательского типа.имейте в виду, что вы определили его для строкового метода.

0 голосов
/ 10 октября 2018

Измените Main() на:

        public static void Main(string[] args)
        {
            Fibonacci fibo = new Fibonacci();

            foreach(var element in fibo.getSequence(9))
            {
                 Console.WriteLine(element);
            }

            Console.ReadLine();
        }

Объяснение

Посмотрите, что вы передаете Console.WriteLine() в своем примере.getSequence() возвращает список, поэтому вы передаете список в WriteLine().WriteLine будет ToString() в коллекции, которая по умолчанию будет отображать тип.Если вы передадите ему каждый отдельный элемент (int), он будет вызывать ToString() для каждого и даст вам номер.

Это основано на предположении, что вы хотите строку для каждого элемента.Если нет, посмотрите на использование String.Join

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