【发布时间】:2021-03-17 13:53:36
【问题描述】:
我必须创建一个函数来计算一个班级 50 名学生的平均年龄,这是我的代码
public class Student
{
public int[] age = new int[10];
Student()
{
age[0] = 17;
age[1] = 19;
age[2] = 17;
age[3] = 18;
age[4] = 17;
age[5] = 18;
age[6] = 18;
age[7] = 19;
age[8] = 17;
age[9] = 18;
}
}
class Program
{
public void averageAge(Student student)
{
foreach(int i in student.age)
{
int avgage = (i += i) / 2;
}
}
static void main (string[] args)
{
}
我得到一个错误,说不能分配给“i”它是一个 foreach 迭代变量,任何其他方式我都可以为学生年龄初始化这个数组,因为我必须计算 50 名学生的平均年龄,所以分配 50 个不同的时间感觉有点多余
我不知道以这种方式使用 foreach 时我在想什么,我现在用 for 循环交换了 foreach,如下所示:
public void averageAge(Student student)
{
int avgage = 0;
for (int i =0;i<50;i++)
{
avgage += student.age[i];
}
avgage /= 50;
}
【问题讨论】:
-
你不能修改迭代变量。使用临时变量或 for 循环。
-
只需在 foreach 之外创建一个变量并更新该 var 而不是“i”。
-
您的问题的标题似乎与您的问题没有真正的关系。
-
首先,你可以说
int[] age = new int[] {10, 20, ... 50};列出所有值来初始化你的数组。请注意,您没有给出数组的大小,它最终会尽可能大。然后在循环之前初始化一个 int 变量var sum=0;并在循环内执行此操作sum+=i;。然后在循环下方var average=sum/student.age.Length;。我不知道你期望int avgage = (i += i) / 2;做什么。哦,是的,这与您的问题的标题有什么关系?另请注意,如果您想要 17.8 这样的结果,我的代码会进行整数除法(向下舍入),您需要进行强制转换 -
您可以通过 List 启动并使用 linq
var list = new List<int> { 1, 8, 3, 2 }; double result = list.Average();// result: 3.5查找平均值
标签: c# arrays class integer average