根据测试的 class 平均值从数组 C# 输出平均值
Outputting averages from arrays C# based upon class average on a test
我正在尝试使用一个使用数组的程序在测试中输出总体 class 平均值。该计划适用于 class 的 12 名学生。当我尝试输入我需要的所有数据时,我没有得到 class 作为一个整体的平均值。问题显然出在普通计算器本身,但由于我是初学者,所以我不知道如何解决它。任何帮助,将不胜感激。重申一下,我正在寻找一种解决方案,以解决如何修复我的平均计算器以给出 class 总体平均值的问题。我在下面输入了我的代码。我希望我说的很具体。
string[] studentnames = new string[12];
int[] testscore = new int[12];
int i;
int index;
double average;
int total = 0;
//title
Console.Write("\n\nStudent lists:\n");
Console.Write("******************\n");
//asks user to input names
Console.Write("Enter student names:\n");
for (i = 1; i < 12; i++)
{
Console.Write("Student name {0} : ", i);
studentnames[i] = (Console.ReadLine());
//asks user to enter student's test score
Console.Write("Please enter their test score: ");
testscore[i] = Convert.ToInt32(Console.ReadLine());
}
//outputs all values user has entered
Console.WriteLine("\nStudent marks: ");
for (i = 1; i < 12; i++)
{
Console.WriteLine("Name: ");
Console.WriteLine("{0} ", studentnames[i]);
Console.WriteLine("Test score: ");
Console.WriteLine("{0} ", testscore[i]);
}
for (index = 1; index < 12; index++)
{
total = total + testscore[index];
average = total / 12;
Console.WriteLine("The class average was: " + average);
}
Console.ReadKey();
除以总数需要在for
循环之后。
这个:
for (index = 1; index < 12; index++)
{
total = total + testscore[index];
average = total / 12;
Console.WriteLine("The class average was: " + average);
}
需要成为:
for (index = 1; index < 12; index++)
{
total = total + testscore[index];
}
average = ((double)total) / 12;
Console.WriteLine("The class average was: " + average);
另一个问题:您的 for
循环从索引 1 开始。C# 使用基于 0 的索引。我假设您正在尝试计算 12 个学生的平均值,而不是 11 个。
另外,看在上帝的份上,请停止写这个数字 12
。如果您绝对必须对其进行硬编码,请使用常量。
编辑:我已经更新了我的回答以说明 flydog 的评论
我正在尝试使用一个使用数组的程序在测试中输出总体 class 平均值。该计划适用于 class 的 12 名学生。当我尝试输入我需要的所有数据时,我没有得到 class 作为一个整体的平均值。问题显然出在普通计算器本身,但由于我是初学者,所以我不知道如何解决它。任何帮助,将不胜感激。重申一下,我正在寻找一种解决方案,以解决如何修复我的平均计算器以给出 class 总体平均值的问题。我在下面输入了我的代码。我希望我说的很具体。
string[] studentnames = new string[12];
int[] testscore = new int[12];
int i;
int index;
double average;
int total = 0;
//title
Console.Write("\n\nStudent lists:\n");
Console.Write("******************\n");
//asks user to input names
Console.Write("Enter student names:\n");
for (i = 1; i < 12; i++)
{
Console.Write("Student name {0} : ", i);
studentnames[i] = (Console.ReadLine());
//asks user to enter student's test score
Console.Write("Please enter their test score: ");
testscore[i] = Convert.ToInt32(Console.ReadLine());
}
//outputs all values user has entered
Console.WriteLine("\nStudent marks: ");
for (i = 1; i < 12; i++)
{
Console.WriteLine("Name: ");
Console.WriteLine("{0} ", studentnames[i]);
Console.WriteLine("Test score: ");
Console.WriteLine("{0} ", testscore[i]);
}
for (index = 1; index < 12; index++)
{
total = total + testscore[index];
average = total / 12;
Console.WriteLine("The class average was: " + average);
}
Console.ReadKey();
除以总数需要在for
循环之后。
这个:
for (index = 1; index < 12; index++)
{
total = total + testscore[index];
average = total / 12;
Console.WriteLine("The class average was: " + average);
}
需要成为:
for (index = 1; index < 12; index++)
{
total = total + testscore[index];
}
average = ((double)total) / 12;
Console.WriteLine("The class average was: " + average);
另一个问题:您的 for
循环从索引 1 开始。C# 使用基于 0 的索引。我假设您正在尝试计算 12 个学生的平均值,而不是 11 个。
另外,看在上帝的份上,请停止写这个数字 12
。如果您绝对必须对其进行硬编码,请使用常量。
编辑:我已经更新了我的回答以说明 flydog 的评论