c# - 使用属性获取最长的字符串
问题描述
我有以下代码:
public string Longest
{
get
{
int min = int.MinValue;
string longest = "";
for (Node i = Head; i != null; i = i.Next)
{
if (i.Text.Length > min)
{
longest = i.Text.Length.ToString();
}
return longest;
}
return longest;
}
}
问题是我有这些字符串:
List text = new List();
text.Add("Petar");
text.Add("AHS");
text.Add("Google");
text.Add("Me");
当我尝试这个属性时,它说最长的字符串是 5,但那不是真的最长的字符串是 6。我试图找出我的问题在哪里,但我找不到。
解决方案
您的代码有几个问题:
- 长度至少可以为 0,因此您不需要使用
int.MinValue
- 您将在第一次迭代中返回
min
找到更长的值后您没有更新- 您正在返回字符串的长度,而不是字符串本身
您的代码应如下所示:
public string Longest
{
get
{
int longestLength = 0;
string longestWord = string.Empty;
for (Node i = Head; i != null; i = i.Next)
{
if (i.Text.Length > longestLength)
{
longestLength = i.Text.Length;
longestWord = i.Text;
}
}
return longestWord;
}
}
如果您要返回的是最大长度而不是最大长度的单词,则您的属性名称和类型都错误,它应该如下所示:
public int MaximumLength
{
get
{
int maximumLength = 0;
for (Node i = Head; i != null; i = i.Next)
{
if (i.Text.Length > maximumLength)
{
maximumLength = i.Text.Length;
}
}
return maximumLength;
}
}
推荐阅读
- emacs - Emacs org-capture 行开头的模板扩展
- ios - 无法在图表上显示响应数据
- python - counting surrounding true's in numpy matrix (python)
- mysql - MySQL:从连接表中获取每个最新条目
- azure - 使用 ARM 模板创建 Azure 存储队列
- php - 在 localhost 失败程序上发送电子邮件
- java - FileInputStream 无法转换为 Reader
- laravel - 没有自动排序的数据透视表 attach()
- java - 从java中的类中删除命名空间
- salesforce - 使用 AWS Cognito OpenID connect 登录 Salesforce