c# - C#编写一个函数来计算以对象数组为参数的平均年龄
问题描述
我必须创建一个函数来计算一个班级 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 时我在想什么,我现在已经将 foreach 与 for 循环交换,如下所示:
public void averageAge(Student student)
{
int avgage = 0;
for (int i =0;i<50;i++)
{
avgage += student.age[i];
}
avgage /= 50;
}
解决方案
使用 Linq,您可以编写:
using System.Linq;
var student = new Student();
int averageAge = (int)student.age.Average();
https://docs.microsoft.com/dotnet/api/system.linq.enumerable.average
否则,您可以编写此循环:
int averageAge = 0;
for ( int index = 0; index < student.age.Length; index++ )
averageAge = ( averageAge + student.age[index] ) / 2;
Console.WriteLine(avgage);
一个 foreach 是:
foreach ( int value in student.age )
averageAge = ( averageAge + value ) / 2;
因此该方法可以是:
public int GetAverageAge(Student student)
{
int result = 0;
foreach ( int value in student.age )
result = ( result + value ) / 2;
return result;
}
你这样使用:
static void main (string[] args)
{
var student = new Student();
int averageAge = GetAverageAge(student);
}
输出:
Linq = 17
Loop = 17
将构造函数公开,您可以将方法放在类本身中:
public class Student
{
public int[] age = new int[10];
public int GetAverageAge()
{
int result = 0;
foreach ( int value in student.age )
averageAge = ( averageAge + value ) / 2;
return result;
}
public Student()
{
...
}
}
您还可以使用属性:
public int AverageAge
{
get
{
int result = 0;
foreach ( int value in student.age )
averageAge = ( averageAge + value ) / 2;
return result;
}
}
或者简单地说:
public int AverageAge => (int)age.Average();
一个学生的班级的每个实例都有几个年龄还是学生班级?
推荐阅读
- eclipse - 自定义现有菜单项
- c++ - 使用 Cmake 编译 QtGstreamer 时出错,Mingw32 编译器附带 QT 5.12.3
- python - 使用方法从继承自 selenium 类的 python appium 类中查找元素时,Appium 未找到元素
- c# - Combobox does not showing added items (with if condition)
- mysql - varchar 列上的 MySQL first_value 返回格式错误的记录
- javascript - How can I request the default favicon using Node?
- javascript - nuxt - creating child routes for mandatory param route
- robots.txt - 如何保护来自机器人的机密目录?
- codeigniter - 如何在codeigniter中的图像上设置垂直水印?
- r - 使用 geom_colour_manual 获取图例,其中 ggplot 包括回归线和 ab 线