Ale*_*gla 0 c# arrays for-loop average
Console.Write ("How many students do you have?: ");
student = Convert.ToInt32 (Console.ReadLine ());
int[] numberOfStudents = new int[student];
for (int i = 1; i <= numberOfStudents.Length; i++) {
Console.Write ($"Enter student {i}'s current grade: ");
numberOfStudents [i] = Convert.ToInt16 (Console.ReadLine ());
}
int sum = 0;
for(int i = 0; i < numberOfStudents.Length; i++)
{
sum += numberOfStudents[i];
}
average = sum / numberOfStudents.Length;
Console.WriteLine ($"Your student average is {average}.");
Console.ReadLine ();
Run Code Online (Sandbox Code Playgroud)
基本上用户输入学生数量并确定数组的长度.for循环收集稍后计算平均值的所有标记.
出于某种原因,如果numberOfStudents长度为5,当for循环到达第五个时,它会询问学生标记但是当你输入它而不是得到总和并计算平均值时,程序会因system.indexoutofrange错误而崩溃.
谢谢您的帮助!
在C#数组中,起始索引是0而不是1所以你只需要在你的第一个for循环中用0初始化i,你的代码将完全正常工作.试试以下代码:
Console.Write ("How many students do you have?: ");
student = Convert.ToInt32 (Console.ReadLine ());
int[] numberOfStudents = new int[student];
for (int i = 0; i <= numberOfStudents.Length; i++) {
Console.Write ($"Enter student {i+1}'s current grade: ");
numberOfStudents [i] = Convert.ToInt16 (Console.ReadLine ());
}
int sum = 0;
for(int i = 0; i < numberOfStudents.Length; i++)
{
sum += numberOfStudents[i];
}
average = sum / numberOfStudents.Length;
Console.WriteLine ($"Your student average is {average}.");
Console.ReadLine ();
Run Code Online (Sandbox Code Playgroud)