C# 将值存储在数组中并输出最高值、最低值和平均值。输出缺陷

C# 将值存储在数组中并输出最高值、最低值和平均值。输出缺陷,c#,C#,这是老师在学校给我们的一个小问题。我们被要求制作一个程序,不断要求用户输入测试分数,直到他输入-99停止程序。这些值存储在一个数组中,并显示最高、最低和平均分数 我的代码的问题是,每当我运行它时,它总是给我一个最低分数的值0,即使输入中没有零。有人能指出我代码中的错误吗 代码: static void Main(字符串[]args) { int[]za=新int[100]; 得分(za,0); } 公共静态无效分数(int[]ar,int x) { 控制台。写(“请输入作业分数[0到100](-

这是老师在学校给我们的一个小问题。我们被要求制作一个程序,不断要求用户输入测试分数,直到他输入-99停止程序。这些值存储在一个数组中,并显示最高、最低和平均分数

我的代码的问题是,每当我运行它时,它总是给我一个最低分数的值0,即使输入中没有零。有人能指出我代码中的错误吗

代码:

static void Main(字符串[]args)
{
int[]za=新int[100];
得分(za,0);
}
公共静态无效分数(int[]ar,int x)
{
控制台。写(“请输入作业分数[0到100](-99退出):”;
inta=Convert.ToInt16(Console.ReadLine());
如果(a!=-99)
{
ar[x]=a;
x++;
得分(ar,x);
}
其他的
{
Console.Clear();
Console.WriteLine(“家庭作业应用程序”);
int[]arr=新的int[x];
foreach(内部l在arr中)
{
arr[l]=ar[l];
}
int-lowest=arr[0];
对于(int i=1;iarr[i]){looster=arr[i];}
}
int最高=arr[0];
对于(int j=1;j
复制项目时,不要使用
foreach
循环,然后使用存储在数组中的元素作为要插入的索引。相反,使用带有计数器变量的
for
循环

您应该更改此选项:

int[] arr = new int[x];
foreach (int l in arr)
{
    // You're using the wrong value for the index here.
    // l represents the value of the item stored in `arr`, which is `0`
    arr[l] = ar[l]; 
}
为此:

int[] arr = new int[x];
for (var counter = 0; counter < x; counter++)
{
    arr[counter] = ar[counter];
}
int[]arr=newint[x];
用于(变量计数器=0;计数器
您不需要数组。您需要3个变量:max、min、currentAverage。你可以这样计算新的平均值=((当前平均值*i)+数字)/(i+1)。其中i是数字的数量。使用数组是一项要求。您仍然可以将它们存储在数组中,但以后不要使用数组:D。但如果您要使用数组,则只需将值写入数组,直到满足上一个数字的条件,然后迭代数组的所有成员。计算它们的总和,在数组中找到最小值/最大值,然后显示它。我只是按照你说的那样做,但效果仍然一样。arr.Min()仍然给我一个0。我认为数组中的一个元素总是有一个0值。是的,非常感谢。我刚换了这个,它工作了。奇怪的是,这是我第一次编写代码的方式,但由于某种原因,当我运行代码时,它给了我一个错误。我问教授为什么这不起作用,他建议我使用foreach循环。再次感谢你。
int[] arr = new int[x];
for (var counter = 0; counter < x; counter++)
{
    arr[counter] = ar[counter];
}