2016-10-03 2 views
0

Ich habe ein Problem, Namen in alphabetischer Reihenfolge anzuzeigen und umgekehrt. Wenn ich Array.Sort() verwende, zeigt es den letzten Eintrag an erster Stelle an und sortiert dann in alphabetischer Reihenfolge. jede Hilfe, Vorschlag wird sehr geschätzt. Unten ist mein Code:Sortierung von Arrays aufsteigender und absteigender Reihenfolge mit Array.Sort() und 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

zu welchem ​​Zweck bestellen 'nachName [n ameCnt] = Convert.ToString (inValue); 'wenn diese Variable niemals ihren Wert in Ihrer Foreach ändert –

Antwort

0

Das Missverständnis ist, dass, wenn Sie vier Nachnamen Variable nameCnt = 4 in Ihrem foreach an Position 4 Ihrer Anordnung geben Sie den letzten Eintrag geben Sie inValue

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

diese Zeile entfernen, und erst während auch er wird verwendet,

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

Vielen Dank! –

+0

Wenn Sie wählen konnten, half, indem Sie den Scheck verpassen Antwort –

+0

Kein Problem. Ich bin neu auf der Website. –

Verwandte Themen