如何保存新列表的值

时间:2017-05-03 11:44:35

标签: c# console

class student_details     {         public int studId {get;组; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public string UGender { get; set; }

    public int UAge { get; set; }

}

课程计划     {

    static void Main(string[] args)
    {
        string studYear = "";
        int Id = 0;
        //InputDetails
        #region
        Input:

        Console.WriteLine("\nStudent Year Identifier\n\n");
        Console.WriteLine("Enter FirstName: ");
        string Fname = Console.ReadLine();
        Console.WriteLine("Enter LastName: ");
        string Lname = Console.ReadLine();
        Console.WriteLine("Enter Gender: ");
        string Gender = Console.ReadLine();
        Console.WriteLine("Enter Age: ");
        int Age = Convert.ToInt16(Console.ReadLine());
        if (Age < 14)
        {
            studYear = "N/A";
        }
        else if (Age <= 15)
        {
            studYear = "FirstYear";
        }
        else if (Age <= 17)
        {
            studYear = "SecondYear";
        }
        else if (Age <= 19)
        {
            studYear = "ThirdYear";
        }
        else if (Age >= 20)
        {
            studYear = "ForthYear";
        }
        #endregion


        //List
        #region

        List<Model.student_details> listOfstudentDetails = new List<Model.student_details>();
        #endregion
        //Looping
        #region
        Console.WriteLine("Add more student details (Yes or No)?");
        string answer = Console.ReadLine();
        if (answer == "Yes" || answer == "YES" || answer == "yes" || answer == "y" || answer == "Y")
        {
            Console.Clear();

            listOfstudentDetails.Add(new Model.student_details { studId = Id++, FirstName = Fname, LastName = Lname, UGender = Gender, Uage = Age });
            goto Input;
        }
        else if (answer == "No" || answer == "NO" || answer == "no" || answer == "n" || answer == "N")
        {
            Console.Clear();

            listOfstudentDetails.Add(new Model.student_details { studId = Id++, FirstName = Fname, LastName = Lname, UGender = Gender, Uage = Age });
            //var filterName = listOfstudentDetails;
            foreach (var item in listOfstudentDetails)
            {
                Console.WriteLine("Student Id = " + item.studId + ": Firstname is " + item.FirstName + " Lastname is " + item.LastName + " and Gender is " + item.UGender+ " and Age is equal to " + item.Uage + " and his age is applicable for " + studYear);
            }
            Console.ReadKey();

        }
        #endregion

    }

//运行应用程序后,程序会要求输入学生详细信息。输入学生详细信息没有限制。创建详细信息后,程序将始终询问用户是否“添加更多学生详细信息(是或否)?”如果用户输入“是”,程序将要求再次输入以下问题。如果“否”,程序将执行学生列表,并在字符串末尾添加注释,如下面的给定示例所示。

输出: 学生详细信息列表:

学生身份= 1:他的名字是johnny,他的姓氏是bravo。年龄等于20岁,他的年龄适用于第三年。

学生身份= 2:他的名字是史密斯,他的姓氏是巴拉克年龄等于19岁,他的年龄适用于第三年。

学生身份= 3:她的名字是珍妮,她的姓氏是斯威夫特。年龄等于14岁,她的年龄适用于第一年

2 个答案:

答案 0 :(得分:1)

每次循环时,您都会使用新列表覆盖列表。

尝试在Input标签上方定义您的列表。

答案 1 :(得分:1)

您在每个输入周期后覆盖您的列表。这样,你的名单中只有一名学生。

将声明和列表初始化移动到方法的顶部:

static void Main(string[] args)
{
    string studYear = "";
    int Id = 0;
    List<Model.student_details> listOfstudentDetails = new List<Model.student_details>();
}

在范围的开头声明和初始化变量通常是一种很好的做法。

此外,您不应该使用goto来重复输入周期。您应该使用whiledo-while循环。

//initialize your variables
...

do
{
    //input students
    ...
} while (answerWasYes);

//list students
...

您的goto结构是该问题的主要原因,因为它使程序流程更难以遵循。