使用Array.Sort()和Array.Reverse()对数组进行升序和降序排序

本文关键字:Array 升序 降序 排序 Reverse Sort 使用 数组 | 更新日期: 2023-09-27 18:09:52

我有一个按字母顺序显示姓名的问题,反之亦然。当我使用Array.Sort()时,它在第一个位置显示最后一个条目,然后按字母顺序排序。任何帮助,建议将高度赞赏。下面是我的代码:

static void Main(string[] args)
    {
       string [] lastName = new string [100];
       string inValue = "", moreData = "";
       int nameCnt = 0;

       while (moreData != "N")
       {
           lastName[nameCnt] = Convert.ToString(inValue);
           nameCnt++;
           Console.Write("Enter Last Name: ");
           inValue = Console.ReadLine();
           Console.Write("Keep going Y/N? ");
           moreData = Console.ReadLine();
           moreData = moreData.ToUpper();
       }
       Console.WriteLine();
       Console.WriteLine(nameCnt + " Last Name(s) Entered");
        Console.WriteLine();
        Console.WriteLine("Names in Ascending Order'n");

            Array.Sort(lastName);
            foreach (string name in lastName)
            {
                lastName[nameCnt] = Convert.ToString(inValue);
                Console.Write(name);
            }
            Console.WriteLine();
            Console.WriteLine("Names in Ascending Order'n");

            Array.Reverse(lastName);
            foreach (string name in lastName)
            {
                lastName[nameCnt] = Convert.ToString(inValue);
                Console.Write(name);
            }
        Console.ReadLine();
    }

使用Array.Sort()和Array.Reverse()对数组进行升序和降序排序

误解是,如果您在foreach中为变量nameCnt = 4输入四个姓氏在您安排的位置4处,您输入您在变量inValue中停留的最后一个条目

     foreach (string name in lastName)
        {
             /* Asign position 4 to array inValue input 
             lastName[nameCnt] = Convert.ToString(inValue); */
            Console.WriteLine(name);
        }

删除该行并订购第一行,同时

    while (moreData != "N")
        {
            Console.Write("Enter Last Name: ");
            inValue = Console.ReadLine();
            lastName[nameCnt] = Convert.ToString(inValue);
            nameCnt++;
            Console.Write("Keep going Y/N? ");
            moreData = Console.ReadLine().ToUpper();
        }