首页 > 解决方案 > 使用属性获取最长的字符串

问题描述

我有以下代码:

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。我试图找出我的问题在哪里,但我找不到。

标签: c#

解决方案


您的代码有几个问题:

  • 长度至少可以为 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;
    }
}

推荐阅读