2016-04-22 8 views
0

Ich verstehe die Bubble-Sortierung nicht vollständig, also bin ich bei einigen Übungen in ein paar Fehler geraten, die ich nicht herausfinden kann.Mehrere Fehler & Bubble sort error

Mein Code:

static void SortCharacters(Character[] characters) 
{ 

    Console.WriteLine("Which field would you like to sort by? (Name, WeaponName, TotalDefense)"); 
    string userInput = Console.ReadLine(); 

    if (userInput.ToLower() == "name") 
    { 
     int temp = 0; 

     for (int i = 0; i < characters.Length; i++) 
     { 
      for (int j = 0; j < characters.Length - 1; j++) 
      { 
       if (characters[j] > characters[j + 1]) 
       { 
        temp = characters[j + 1]; 
        characters[j + 1] = characters[j]; 
        characters[j] = Convert.ToInt32(temp); 
       } 

      } 
     } 
     for (int i = 0; i < characters.Length; i++) 
      Console.Write(characters[i] + " "); 

     Console.ReadKey(); 
    } 
    else if (userInput.ToLower() == "weapon name") 
    { 

    } 
    else if (userInput.ToLower() == "totaldefense") 
    { 

    } 
} 

Fehler:

  1. Operator '>' kann nicht auf Operanden vom Typ 'Character' und 'Charakter' angewendet werden.

  2. Der Typ 'BinarySearch.Character' kann nicht implizit in 'int' konvertiert werden.

  3. Der Typ 'int' kann nicht implizit in 'BinarySearch.Character' konvertiert werden.
+1

Was ist die Definition von 'Character' hier? Ist das eine Klasse, die du erstellt hast? –

+0

Angenommen, 'Character' ist eine Klasse mit Eigenschaften, ich denke, dass Sie basierend auf den Werten in der ausgewählten Eigenschaft, nicht auf dem gesamten Objekt selbst sortieren möchten. Durch die Veröffentlichung Ihres 'Character'-Klassencodes und vielleicht einiger Beispieldaten können wir Ihnen helfen. – Tim

Antwort

0

Verwenden Sie string statt Character[].

0

Base auf den Code, ich denke, hier sind Ihre Probleme:

  1. Operator '>' cannot be applied to operands of type 'Character' and 'Character'.

Diese Zeile verursacht den Fehler: if (characters[j] > characters[j + 1]). Da der Typ characters[index]Character ist, kann man nicht einfach so vergleichen. Ich denke, was Sie wollen, vergleicht seine name. So sollte die Aussage sein:

if (characters[j].Name > characters[j + 1].Name) 
  1. Cannot implicitly convert type 'BinarySearch.Character' to 'int'.

  2. Cannot implicitly convert type 'int' to 'BinarySearch.Character'.

Die Ursachen, ist dies:

int temp = 0; 

// Some code here 

temp = characters[j + 1]; 
characters[j + 1] = characters[j]; 
characters[j] = Convert.ToInt32(temp); 

Sie hier den Typ nicht übereinstimmen Fehler sehen kann. Sie versuchen, Character zu int zuzuweisen und umgekehrt. Um dies zu beheben, sollten Sie die Art der temp-Character ändern:

//int temp = 0; Don't do this 

Character temp; // Do this 

// Some code here 

temp = characters[j + 1]; 
characters[j + 1] = characters[j]; 
characters[j] = temp; 
Verwandte Themen