【问题标题】:Multiple errors & Bubble sort error多个错误和冒泡排序错误
【发布时间】:2016-04-22 22:05:26
【问题描述】:

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

我的代码:

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”。

【问题讨论】:

  • 这里Character的定义是什么?这是您创建的课程吗?
  • 假设 Character 是一个具有属性的类,我认为您希望根据所选属性中的值进行排序,而不是整个对象本身。发布您的 Character 课程代码和一些示例数据可能会对我们有所帮助。

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


【解决方案1】:

使用string 而不是Character[]

【讨论】:

    【解决方案2】:

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

    1. 运算符“>”不能应用于“字符”和“字符”类型的操作数。

    此行导致错误:if (characters[j] &gt; characters[j + 1])。因为characters[index] 的类型是Character,所以不能这样比较。我想你想要的是比较它的name。所以,声明应该是:

    if (characters[j].Name > characters[j + 1].Name)
    
    1. 无法将类型“BinarySearch.Character”隐式转换为“int”。

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

    原因是这样的:

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-19
      • 2017-02-07
      • 2018-11-13
      • 2023-04-07
      • 2018-05-04
      • 2014-06-03
      • 1970-01-01
      相关资源
      最近更新 更多