为什么我的代码只比较第一个字符? 我的错误在哪里? 我正在尝试比较两个字符串中的字符,并获得最先出现的字符串,如#34; camera"首先是" car"。但如果"相机"是第二个参数,我的程序告诉我,汽车是第一个。
static string CompareChars(string a, string b)
{
foreach (char aa in a)
{
foreach (char bb in b)
{
if (aa > bb)
return a;
}
}
return b;
}
答案 0 :(得分:3)
您将a
的第一个字母与b
中的所有字母进行比较,而不是将a
的第一个字母与仅b
的第一个字母进行比较并继续前进两个字符串的第二个字母。
你可能想要的是一个for
循环+索引到两个字符串。
或者您可以使用内置比较功能:
static string CompareString(string a, string b)
{
return a.CompareTo(b) < 0 ? a : b;
}
答案 1 :(得分:1)
如第一个答案中所述,您将第一个字符串中的所有字符与第二个字符串中的每个字母进行比较,因此,打破这个字母可以说你有这个:
var a = "this";
var b = "that";
比较集看起来像
if('t' >'t')
if('t' > 'h')
if('t' > 'a')
if('t' > 't')
if('h' > 't')
if('h' > 'h')
if('h' > 'a')
if('h' > 't')
等等。
如上所述,您可以使用
static string CompareString(string a, string b)
{
return a.CompareTo(b) < 0 ? a : b;
}
以下是综合字符串比较文档的链接:
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/strings/how-to-compare-strings
希望这有帮助