Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在自定义方法中将最小值(array.Min())分配给数组中的元素_C#_Arrays_Methods - Fatal编程技术网

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

C# 在自定义方法中将最小值(array.Min())分配给数组中的元素,c#,arrays,methods,C#,Arrays,Methods,对于初学者来说,我对C#比较陌生,这是一个编程1类。这是一个控制台应用程序。我必须使用两种自定义方法,允许用户在已分配的数组中输入最多10个值,例如int[]numberArray=new int[10]这是一个经过计算机测试的问题,否则我只需定义数组并将长度设置为用户输入的条目数。在第一种方法中,设置循环以允许用户输入10个值,或者如果输入了999的sentinel值,则退出循环。第二种方法显示输入的值的统计信息(数组所包含的值的数量、最小值、最大值、值的总和和平均值)。以下是我对统计方法的了

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

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个值,则最小值是正确的。作为旁注,我让count工作的方法是将其设置为public,并在main()方法之外,以允许在for循环和嵌套if语句内部分配它,以确定是否输入了sentinel值。 我主要认为统计方法是我的问题所在,但这是另一种方法的代码,以备改进,或者这就是问题所在

{
    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;
字符串输入字符串;
WriteLine(“输入一个整数:”);
对于(x=0;x

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

您还没有显示代码,但是您创建的数组(可能大小为10)将初始化该数组,使其成为10个值都等于0的值

如果您跟踪在该数组中放入多少内容的计数,则可以执行以下操作:

array.Take(count).Min();

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

Max()、Min()、Sum()、Average(),它们都将使用声明的完整数组(10个元素)。声明一个具有正确计数的新数组并将其作为参数传递,或者编写自己的数学函数来关注计数变量。遗憾的是,我们还没有学习列表。是的,它将所有值初始化为0,就像你提到的。不过,这确实解决了我的问题,所以谢谢你!遗憾的是,这是通过我们教科书在线部分的计算机评分的。这帮助我通过了65%到70%的检查。Cengage(在线文本的宿主)需要特定的输出,但这是由于数组.Average()造成的;它看起来像。酷,如果它回答了您的问题,请接受答案作为解决方案:)