2016-10-03 178 views
0

我有一個問題,按字母順序顯示名稱,反之亦然。當我使用Array.Sort()時,它首先顯示最後一個條目,然後按字母順序排序。任何幫助,建議將不勝感激。下面是我的代碼:使用Array.Sort()和Array.Reverse()排序陣列升序和降序

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(); 
    } 
+0

什麼目的,可以使用'lastName的[N ameCnt] = Convert.ToString(inValue);'如果該變量永遠不會在您的foreach中更改它的值 –

回答

0

的誤解是,如果你在你的安排的4位置進入最後四個名字在你的foreach 可變nameCnt = 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(); 
     } 
+0

非常感謝! –

+0

如果您可以通過給予支票錯過迴應 –

+0

幫助投票沒問題。我是新來的網站。 –

相關問題