为什么这个Max函数返回的数字太大而且不在列表中?

时间:2018-01-11 04:10:40

标签: c#

我是C#的初学者和一般的新手。下面的程序是按字母顺序打印最长的子字符串。 if循环找到这些子字符串。我遇到的问题是public static void Max,我想从字符串中打印最大值。该字符串包含if循环中找到的子字符串的长度值。然而,Max正在打印不在列表中且没有意义的大数字。 Max最终将返回max,我将仅用于打印长度与Max匹配的子字符串。代码如下。

    public static void Max(string list)
    {
             //prints max lenght 
        int maxi = 0;

        {     
            {

                for (int a = 0; a < list.Length-1; a = a + 1)
                {

                    if (list[a] > maxi)
                        maxi = list[a];

                   //  Console.WriteLine(maxi);

                  }}}}

原始列表值为: List Value

最大功能打印: Max prints

1 个答案:

答案 0 :(得分:1)

您的Max函数需要string作为输入。这很奇怪。更好的是接受List<int>

public static int Max(List<int> list) {
    int max = 0;

    for (var x in list) {
        if (x > max) {
            max = x;
        }
    }

    return max;
}

Console.WriteLine(Max(list));

但为什么不只是使用内置功能:

Console.WriteLine(list.Max());