我不完全理解冒泡的排序,所以在做一些练习时遇到了一些我无法弄清楚的错误。
我的代码:
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")
{
}
}
错误:
运营商'&gt;'不能应用于'Character'和'Character'类型的操作数。
无法将类型'BinarySearch.Character'隐式转换为'int'。
答案 0 :(得分:0)
使用string
代替Character[]
。
答案 1 :(得分:0)
根据您的代码,我认为这是您的问题:
- 运营商&#39;&gt;&#39;不能应用于类型&#39;字符&#39;的操作数。和&#39;字符&#39;。
醇>
此行会导致错误:if (characters[j] > characters[j + 1])
。由于characters[index]
的类型为Character
,因此您无法像这样进行比较。我想你想要的是比较name
。所以,陈述应该是:
if (characters[j].Name > characters[j + 1].Name)
无法隐式转换类型&#39; BinarySearch.Character&#39;到&#39; int&#39;。
- 醇>
无法隐式转换类型&#39; int&#39;到BinarySearch.Character&#39;。
原因是:
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;