Показать список различных типов данных, созданных из пользовательского ввода в C # - PullRequest
0 голосов
/ 27 октября 2018

Я пытаюсь создать программу, которая будет принимать информацию об ученике от пользователя и отображать ее на консоли.Пользователь может выбрать, хотите ли он вводить информацию или отображать информацию из меню.Я думаю, что у меня есть список, настроенный на получение информации об ученике, но мои списки не отображаются, кто-то может дать мне какие-либо предложения?

Вот мой код списка:

  public static List<undergradList> addUnderGrad(List<undergradList> list)
    {
        bool done;
        List<undergradList> listB = new List<undergradList>();
        undergradList ugl = new undergradList();

        Console.WriteLine();
        do
        {
            done = false;
            try
            {
                    Console.WriteLine("Enter Student ID.");
                    long userInput1 = Convert.ToInt32(Console.ReadLine());
                    ugl.studID = userInput1;

                    Console.WriteLine();

                    Console.WriteLine("Enter Student Name.");
                    string userInput2 = Console.ReadLine();
                    ugl.studName = userInput2;

                    Console.WriteLine();

                    Console.WriteLine("Enter Student DOB. (MM/DD/YY) ");
                    DateTime userInput3 = DateTime.Parse(Console.ReadLine());
                    ugl.dateOfBirth = userInput3;

                    Console.WriteLine();

                    Console.WriteLine("Enter Student Major.");
                    string userInput4 = Console.ReadLine();
                    ugl.major = userInput4;

                    Console.WriteLine();

                    Console.WriteLine("Enter Student Previous High School.");
                    string userInput5 = Console.ReadLine();
                    ugl.previousHS = userInput5;

                    Console.WriteLine();

                    Console.WriteLine("Enter Student Classification.");
                    string userInput6 = (Console.ReadLine());
                    ugl.stdClass = userInput6;

                Console.WriteLine();

                Console.WriteLine("Are you done entering students? (y/n)");
                string answer = Console.ReadLine();

                if (answer == "y")
                {
                    done = true;
                }
                else { Console.WriteLine(); }
            }
            catch { Console.WriteLine("Answer invalid, try again."); }
        } while (done == false);
        return list;

    }

Вот мой код дисплея:

public static void showUndergradList(List<undergradList> listB)
    {
      foreach(var instance in listB)
        {
            Console.WriteLine(instance);
        }
    }

Ответы [ 2 ]

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

ваша переменная для списка в методе Add возвращает ноль, потому что переменная объявлена ​​внутри метода Add.

  List<undergradList> listB = new List<undergradList>();
 public static List<undergradList> addUnderGrad(List<undergradList> list)
{
    undergradList ugl = new undergradList();
    bool done;

     //..
}

поэтому объявляйте List вне каких-либо методов.

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

В вашем коде есть две проблемы.

  1. Вам необходимо использовать метод listB.Add для добавления экземпляра в List, когда вы заполняете свои данные undergradList, в противном случае коллекция listB не будет заполнять любые данные.

  2. пусть undergradList ugl = new undergradList(); в цикле, иначе вы добавите тот же экземпляр в коллекцию listB.

код может выглядеть следующим образом.

bool done;
List<undergradList> listB = new List<undergradList>();

Console.WriteLine();
do
{
    undergradList ugl = new undergradList(); //create a new instance in loop
    done = false;
    try
    {
            Console.WriteLine("Enter Student ID.");
            long userInput1 = Convert.ToInt32(Console.ReadLine());
            ugl.studID = userInput1;

            Console.WriteLine();

            Console.WriteLine("Enter Student Name.");
            string userInput2 = Console.ReadLine();
            ugl.studName = userInput2;

            Console.WriteLine();

            Console.WriteLine("Enter Student DOB. (MM/DD/YY) ");
            DateTime userInput3 = DateTime.Parse(Console.ReadLine());
            ugl.dateOfBirth = userInput3;

            Console.WriteLine();

            Console.WriteLine("Enter Student Major.");
            string userInput4 = Console.ReadLine();
            ugl.major = userInput4;

            Console.WriteLine();

            Console.WriteLine("Enter Student Previous High School.");
            string userInput5 = Console.ReadLine();
            ugl.previousHS = userInput5;

            Console.WriteLine();

            Console.WriteLine("Enter Student Classification.");
            string userInput6 = (Console.ReadLine());
            ugl.stdClass = userInput6;

        Console.WriteLine();


        listB.Add(ugl); //add instance in List


        Console.WriteLine("Are you done entering students? (y/n)");
        string answer = Console.ReadLine();

        if (answer == "y")
        {
            done = true;
        }
        else { Console.WriteLine(); }
    }
    catch { Console.WriteLine("Answer invalid, try again."); }
} while (done == false);
return list;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...