我正在尝试编写一个c#代码,用于获取锯齿阵列的学生成绩(每个学生的成绩数量可以不同)并计算每个学生的平均成绩。这里是我的代码:如何将一个数组添加到整数c#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace students_avg
{
class Program
{
static void Main(string[] args)
{
int n,m,i,j,count=0,avg;
Console.WriteLine("please enter the number of students");
n = Convert.ToInt32(Console.ReadLine());
int [][] student = new int [n+1][];
for (i = 1; i <= n; i++)
{
Console.WriteLine("how many grades does student number " + i + "have?");
m = Convert.ToInt32(Console.ReadLine());
student[i] = new int[m];
Console.WriteLine("please enter student number " + i + "'s grades");
for (j = 1; j <= m; j++)
{
student[i] =new int[] {Convert.ToInt32(Console.ReadLine())};
count +=Convert.ToInt32(student[i]);
}
avg = count/m ;
Console.WriteLine("the student number " + i + "'s average is " + avg);
}
Console.ReadKey();
}
}
}
但我有问题,因为它不给我适当的平均。那么,我怎样才能以正确的方式添加学生的成绩呢?
有什么特别的原因,试图用手球阵列时,你可以用列表的列表,并得到这一切通过LINQ? – Mark
您在循环外部和循环的每次执行中设置'student [i] = new ...',但不在循环中使用'j'。 'Convert.ToInt32(student [i])'传递内部数组作为对象,我认为应该抛出一个异常,因为int []不是'IConvertible'。我认为你的意思是'学生[i] [j] = Convert.ToInt32(Console.ReadLine()); count + = student [i] [j];'当我们已经知道这个值是一个'int'时,不需要在第二行调用Convert。你可能应该使用'int.Parse()'或甚至更好的'int.TryParse()',这样你可以处理错误的输入。 – pinkfloydx33
不需要在方法顶部声明循环变量。它们的范围应该是循环条件。也给你的其他变量有意义的名字。 –