多个错误&冒泡排序错误

时间:2016-04-22 22:05:26

标签: c# sorting search binary-search bubble-sort

我不完全理解冒泡的排序,所以在做一些练习时遇到了一些我无法弄清楚的错误。

我的代码:

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. 运营商'&gt;'不能应用于'Character'和'Character'类型的操作数。

  2. 无法将类型'BinarySearch.Character'隐式转换为'int'。

  3. 无法将类型'int'隐式转换为'BinarySearch.Character'。

2 个答案:

答案 0 :(得分:0)

使用string代替Character[]

答案 1 :(得分:0)

根据您的代码,我认为这是您的问题:

  
      
  1. 运营商&#39;&gt;&#39;不能应用于类型&#39;字符&#39;的操作数。和&#39;字符&#39;。
  2.   

此行会导致错误:if (characters[j] > characters[j + 1])。由于characters[index]的类型为Character,因此您无法像这样进行比较。我想你想要的是比较name。所以,陈述应该是:

if (characters[j].Name > characters[j + 1].Name)
  
      
  1. 无法隐式转换类型&#39; BinarySearch.Character&#39;到&#39; int&#39;。

  2.   
  3. 无法隐式转换类型&#39; int&#39;到BinarySearch.Character&#39;。

  4.   

原因是:

int temp = 0;

// Some code here

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

您可以在此处查看类型不匹配的错误。您正尝试将Character分配给int,反之亦然。要解决此问题,您应该将temp的类型更改为Character

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