在自定义方法中为数组中的元素分配最小值(array.Min())

问题描述 投票:1回答:1

对于初学者来说,我对C#还是比较陌生,这是针对编程1类的。这是一个控制台应用程序。我必须使用两种自定义方法,以允许用户在已分配EX的数组中最多输入10个值。 int[] numberArray = new int[10]这是一个经过计算机测试的问题,否则我将只定义数组并将长度设置为用户输入的许多条目。在第一种方法中,将循环设置为允许用户输入10个值,或者如果输入的前哨值999,则退出循环。第二种方法显示输入值的统计信息(数组保存的值量,最小值,最大值,值的总和和平均值)。这是我为统计方法所准备的参数,该统计方法已为分配预定义了参数,并且内部是我的代码:

public static void Statistics(int[] array, int els, out int high, out int low, 
    out int sum, out double avg)
{        
    //set statistic values via the arguments
    els = count;
    high = array.Max();
    low = array.Min();
    sum = array.Sum();
    avg = array.Average();
    //output the statistics
    WriteLine("The array has {0} values", els);
    WriteLine("The highest value is {0}", high);
    WriteLine("The lowest value is {0}", low);
    WriteLine("The sum of the values is {0}", sum);
    WriteLine("The average is {0}", avg);
}

我发现的问题是,即使用户未输入10个总计值,最小值始终设置为0。根据我的教授建议,我尝试过使用for循环来迭代count的值,这就是我用来分配输入的值的数量。这样做时,低变量被视为未分配(因为它是out且需要分配的值)。我收集到这是由于当它在for循环中时被视为局部变量。除了正确分配的最小值以外,其他所有内容都将检查出来,这是我的主要问题,并且关注的是,如果用户未输入10个值,我将如何为其分配一个适当的最小值。如果用户确实输入了10个值,则最小值是正确的。附带说明一下,让我工作的方法是将其设置为public和main()方法之外,以允许在for循环内分配它,并嵌套if语句以确定是否已输入前哨值。我主要认为统计方法是我的麻烦所在,但如果可以进行改进,或者可能是问题所在,这是另一种方法的代码。

{
    int x;
    string inputString;
    WriteLine("Enter an integer: ");

    for (x = 0; x < array.Length; ++x)
    {
        inputString = ReadLine();
        //Will break the loop to continue to next method or line
        if (int.Parse(inputString) == 999)
        {
            // count how many times we entered in data
            count = x;
            break;
        }
        // will add input to array and continue until sentinel value is entered
        array[x] = int.Parse(inputString);
        WriteLine("Enter another integer: ");
    }

    count = x;
    return x;
}

我只添加了int = x,因为该方法需要返回一个int,但我不确定如何使它工作。

c# arrays methods
1个回答
1
投票

您尚未显示代码,但是在创建数组(大小可能为10的数组时,将会将该数组初始化为10个都等于0的东西。

如果您跟踪放入该数组中的事物数,则可以执行

array.Take(count).Min();

或者您可以在获取每个输入时动态增长数组(或者理想情况下,仅使用通用列表)。但是,根据您的教授的不同,允许使用的内容可能会有不同的要求]

© www.soinside.com 2019 - 2024. All rights reserved.