当前位置: 首页 > 知识库问答 >
问题:

C#编写了一个以对象数组为参数计算平均年龄的函数

申屠亦
2023-03-14

我必须创建一个函数来计算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;
        }

共有1个答案

刘星火
2023-03-14

使用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 ( 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();
 类似资料:
  • 问题内容: 我希望函数计算Double型数组的平均值。该数组称为“投票”。现在,我有10个号码。 当我致电以获取阵列投票的平均值时,它不起作用。 这是我的代码: 我如何在此处称平均值以获得平均值? 问题答案: 您应该使用reduce()方法对数组求和,如下所示: Xcode Xcode 10.2+•Swift 5或更高版本 如果您需要使用类型的总和,那么它已经被协议扩展方法所涵盖,因此您只需要实现

  • 问题内容: 我正在尝试使用下面的代码来计算用户输入的一组值的平均值,并将其显示在中,但它无法正常工作。假设用户输入7、4和5,该程序在应显示5.3时显示平均值。 代码有什么问题? 问题答案: 当您拥有增强的for循环时,为什么还要对索引使用笨拙的for循环?

  • 在JavaScript中,我生成了一个x个数组,所有数组由57个数字组成。我想计算数组中每个数字的平均值,作为一个数组的平均值,即: array1[0]array2[0]array3[0]…./阵列数=[0]的平均值 array1[1]阵列2[1]阵列3[1]…./阵列数=[1]的平均值 数组一数组二数组三数组二..../数组数量=平均值[2] 这是生成的数组数组的示例: 谁能给我一个例子,让我可

  • 问题内容: 考虑到他们的DOB格式为dd / mm / yyyy,我正在寻找一种计算人的年龄的方法。 我一直在使用以下功能,该功能在几个月内都可以正常工作,直到某种故障导致while循环永远不会结束并且使整个站点陷入瘫痪。由于每天有近100,000个DOB多次通过此功能,因此很难确定造成此问题的原因。 有人有更可靠的年龄计算方法吗? 编辑:此函数的某些时间似乎可以正常工作,但对于14年9月14日的

  • 问题内容: Y1961 Y1962 Y1963 Y1964 Y1965 Region 0 82.567307 83.104757 83.183700 83.030338 82.831958 US 1 2.699372 2.610110 2.587919 2.696451 2.846247 US 2 14.131355 13.690028 13.599516 13.649176 13.649046

  • 问题内容: 我希望我能弄清楚。我需要生成一个平均值为AVG_AMT(整数)的表,并且没有小数。它可以舍入或截断。这张桌子真的没关系。 这是我试图写的: 有什么建议? 问题答案: