Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 循环引用参数_C#_Loops_Parameters_Assignment Operator_Ref - Fatal编程技术网

C# 循环引用参数

C# 循环引用参数,c#,loops,parameters,assignment-operator,ref,C#,Loops,Parameters,Assignment Operator,Ref,我正在完成一个家庭作业,在循环函数以返回文件中每个名称的参数时遇到了一个小问题。我希望有人能很快看到这一点,并建议我应该在哪里放置一个循环。我在任何对我有意义的地方都试过。该函数如何工作的简要说明。它将查看一个包含多个学生、年级和课时的文件,然后计算每个学生的平均成绩。将学生姓名和GPA返回Main,Main将调用另一个函数来创建输出文件。目前创建的唯一文件是为文件中的最后一名学生(Miguel Ortiz及其GPA)创建的 对不起,这个代码太难看了。示例文件太荒谬了 输入文件如下所示: Jac

我正在完成一个家庭作业,在循环函数以返回文件中每个名称的参数时遇到了一个小问题。我希望有人能很快看到这一点,并建议我应该在哪里放置一个循环。我在任何对我有意义的地方都试过。该函数如何工作的简要说明。它将查看一个包含多个学生、年级和课时的文件,然后计算每个学生的平均成绩。将学生姓名和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

我认为您需要创建一个字典,并在循环中,将每个学生和年级放入字典,而不是返回名称


从功能中返回词典以进行进一步处理。

与论坛网站不同,我们不使用“谢谢”或“感谢任何帮助”或签名。请参阅“。您的方法应该返回
列表
字典
,而不是使用
out
参数