【发布时间】:2016-06-18 06:50:00
【问题描述】:
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 ();
基本上,用户输入学生人数并确定数组的长度。 for 循环收集稍后计算平均值的所有标记。
由于某种原因,如果 numberOfStudents 长度为 5,当 for 循环到达第五次时,它会要求学生标记,但是当您输入它而不是获取总和并计算平均值时,程序会因 @ 而崩溃987654323@错误。
感谢您的帮助!
【问题讨论】:
-
数组在 C# 中从零开始。您的 second for 循环 (
for (int i = 0; i < numberOfStudents.Length; i++)) 是正确的,但您的 first for 循环就像它们是基于一个的:for (int i = 1; i <= numberOfStudents.Length; i++)跨度> -
您的第一个 for 循环是基于一个的。您应该将其更改为从零开始。
-
您将同一个变量用于两个不同的目的。您有一系列学生。每个学生都应该有一系列的成绩。两个数组的长度可以不同。再看看你的代码。
-
从0和i开始首先
-
要缩短此代码,您可以跳过数组并创建一个
sum变量并在一个 for 循环中添加它,然后从中计算总和,尽管这可能不适合规范。
标签: c# arrays for-loop average