2016-04-22 5 views
0

バブルソートを完全に理解していないので、いくつかの練習をしているうちに私は理解できないいくつかのエラーに遭遇しました。複数のエラーとバブルソートエラー

マイコード:

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") 
    { 

    } 
} 

エラー:

  1. 演算子 '>' 型 '文字' と '文字' のオペランドに適用することはできません。

  2. 'BinarySearch.Character'型を暗黙的に 'int'に変換できません。

  3. 'int'型を暗黙的に 'BinarySearch.Character'に変換できません。
+1

ここで 'Character'の定義は何ですか?これはあなたが作成したクラスですか? –

+0

'Character'はプロパティを持つクラスだと仮定すると、オブジェクト全体ではなく、選択したプロパティの値に基づいてソートしたいと思います。あなたの 'Character'クラスコードとおそらくいくつかのサンプルデータを投稿することは私たちがあなたを助けるのを助けるでしょう。 – Tim

答えて

0

Character[]の代わりにstringを使用してください。あなたのコードの

0

ベースは、私はあなたの問題をここで考えている:

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

この行は、エラーの原因:if (characters[j] > characters[j + 1])characters[index]のタイプはCharacterなので、そのように比較することはできません。私はあなたが望むものは、そのnameを比較していると思います。だから、文は次のようになります。

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'.

原因このです:

int temp = 0; 

// Some code here 

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

あなたはここにタイプ不一致エラーを見ることができます。 Characterintに割り当てようとしています。逆の場合も同様です。これを修正するには、Charactertempの種類を変更する必要があります。

//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;