循环引用参数
本文关键字:参数 引用 循环 | 更新日期: 2023-09-27 18:27:59
我正在完成一项家庭作业,在函数中循环返回文件中每个名称的参数时遇到了一个小问题。我希望有人能很快看到这一点,并建议我应该在哪里放置一个循环。我在任何对我有意义的地方都试过了。关于这个功能是如何工作的简要介绍。它将查看一个包含多个学生、年级和&然后计算每个学生的平均成绩。将学生姓名和GPA返回Main,然后Main将调用另一个函数来创建输出文件。目前,唯一正在创建的文件是为文件中的最后一名学生(Miguel Ortiz和他的GPA)。
抱歉,这个代码太难看了。样本文件太荒谬了!
输入文件如下所示:
Jack Johnson
A
2
C
3
F
2
D
2
B
4
A
4
Miguel Ortiz
C
4
A
3
F
2
编写代码:
public static void ProcessGrades(ref string File, out string Name, out double GPA)
{
string FilePath = @"C:'Users'heathi'Documents'Visual Studio 2013'Projects'" +
@"GPA Calculation'GPA Calculation'bin'Release'";
StreamReader inFile = new StreamReader(FilePath + File);
double gpa = 0.0;
string letterGrade = "";
string line;
double grade = 0;
double hours = 0;
double points = 0;
double i = 0;
bool result = false;
string studentName = "";
while ((line = inFile.ReadLine()) != null)
{
if (line.Length > 1)
{
if (studentName != line)
{
if (hours != 0)
{
gpa = (points / hours);
gpa = Math.Round(gpa, 2);
Console.WriteLine(studentName + " GPA " + gpa.ToString());
}
studentName = line;
points = 0;
hours = 0;
grade = 0;
}
}
else
{
result = double.TryParse(line, out i);
if (result == true)
{
hours += double.Parse(line);
points += (grade * double.Parse(line));
}
else
{
letterGrade = line;
switch (letterGrade)
{
case "A":
grade = 4;
break;
case "B":
grade = 3;
break;
case "C":
grade = 2;
break;
case "D":
grade = 1;
break;
case "F":
grade = 0;
break;
}
}
}
}
gpa = (points / hours);
gpa = Math.Round(gpa, 2);
Console.WriteLine(studentName + " GPA " + gpa.ToString());
Name = studentName;
GPA = gpa;
} // end ProcessGrades
我认为您需要创建一个Dictionary,并在循环中,将每个学生和成绩放入Dictionary中,而不是返回名称。
从函数返回字典以进行进一步处理。