Q:

Collecting multiple Variables from one loop

I'm Working on a project for college and have sat here trying to figure out a solution to this problem for a solid 3 hours now. the problem is:
Scenario:
You want to calculate a student’s GPA (Grade Point Average) for a number of classes taken by the student during a single semester.
Inputs:

The student’s name.
Class names for the classes taken by the student.
Class letter grade for the classes taken by the student.
Class credit hours for the classes taken by the student.

Processing:

Accept and process classes until the user indicates they are finished.
Accumulate the number of credit hours taken by the student.
Calculate the total number of “points” earned by the student as:
a. For each class calculate the points by multiplying the credit hours for that class times the numeric equivalent of the letter grade. (A=4.0, B=3.0, C=2.0, D=1.0, F=0)
b. Total all points for all classes.
Calculate the GPA as the total number of “points” divided by the total credit hours.

Output:
Display a nicely worded message that includes the student’s name and the GPA (decimal point number with 2 decimal places) achieved by the student that semester.
What I currently have is:
static void Main(string[] args)
{
    String StudentName;

    //Error Trapping
    try
    {
        Console.WriteLine("Welcome to The GPA Calculator");
        Console.WriteLine("Hit any key to continue...");
        Console.ReadKey();

        Console.Write("Please enter your name: ");
        StudentName = Convert.ToString(Console.ReadLine());
        InputGradeInfo();
    }

    //Error Repsonse
    catch (System.Exception e)
    {
        Console.WriteLine("An error has Occurred");
        Console.WriteLine("The error was: {0}" , e.Message);
        //Belittle the User
        Console.WriteLine("Good Job, you Broke it.");
        Console.ReadLine();
    }
}

public static double InputGradeInfo()
{
    String ClassName;
    Char LetterGrade;
    Double LetterGradeValue;
    Double CreditHours;
    Double ValueOfClass;

    Console.Write("Please enter the class title: ");
    ClassName = Convert.ToString(Console.ReadLine());

    Console.Write("Please enter the total credits this class is worth: ");
    CreditHours = Convert.ToDouble(Console.ReadLine());

    Console.Write("Please enter the grade letter recived: ");
    LetterGrade = Convert.ToChar(Console.ReadLine());
    switch (LetterGrade)
    {
        case 'a': LetterGradeValue = 4;
            break;
        case 'A': LetterGradeValue = 4;
            break;
        case 'b': LetterGradeValue = 3;
            break;
        case 'B': LetterGradeValue = 3;
            break;
        case 'c': LetterGradeValue = 2;
            break;
        case 'C': LetterGradeValue = 2;
            break;
        case 'd': LetterGradeValue = 1;
            break;
        case 'D': LetterGradeValue = 1;
            break;
        case 'f': LetterGradeValue = 0;
            break;
        case 'F': LetterGradeValue = 0;
            break;
        default: LetterGradeValue = 0;
            break;
    }

    ValueOfClass = CalculateClass(LetterGradeValue, CreditHours);
    return ValueOfClass;
}

public static double CalculateClass(double LetterGrade, double CreditHours)
{
    Double CreditTotal;
    CreditTotal = CreditHours * LetterGrade;
    return CreditTotal;
}

The Problem arises for me as to how one would loop info collection, save it to different variable every time and then breaking the loop using user input at the end. We haven't learned about arrays yet so that's off the table. After I have that looped collection down calculating the total GPA and displaying wouldn't be difficult.
Also I haven't learned about created classes yet so I can't use those either

A:

    static void Main(string[] args)
    {
        String StudentName;

        //Error Trapping
        try
        {
            Console.WriteLine("Welcome to The GPA Calculator");
            Console.WriteLine("Hit any key to continue...");
            Console.ReadKey();

            Console.Write("Please enter your name: ");
            StudentName = Convert.ToString(Console.ReadLine());

            List<double> gradeInfoList = new List<double>();
            List<double> creditList = new List<double>();
            bool brakeLoop = false;

            while (!brakeLoop)
            {
                gradeInfoList.Add(InputGradeInfo(creditList));

                Console.WriteLine("Do you want to continue(y/n): ");
                brakeLoop = Console.ReadLine() != "y";
            }

            Console.WriteLine(StudentName + " GPA is: " + gradeInfoList.Sum() / creditList.Sum());
        }

        //Error Repsonse
        catch (System.Exception e)
        {
            Console.WriteLine("An error has Occurred");
            Console.WriteLine("The error was: {0}", e.Message);
            //Belittle the User
            Console.WriteLine("Good Job, you Broke it.");
            Console.ReadLine();
        }
    }

    public static double InputGradeInfo(List<double> creditList)
    {
        String ClassName;
        Char LetterGrade;
        Double LetterGradeValue;
        Double CreditHours;
        Double ValueOfClass;

        Console.Write("Please enter the class title: ");
        ClassName = Convert.ToString(Console.ReadLine());

        Console.Write("Please enter the total credits this class is worth: ");
        CreditHours = Convert.ToDouble(Console.ReadLine());
        creditList.Add(CreditHours);

        Console.Write("Please enter the grade letter recived: ");
        LetterGrade = Convert.ToChar(Console.ReadLine().ToUpper());
        switch (LetterGrade)
        {
            case 'A': LetterGradeValue = 4;
                break;
            case 'B': LetterGradeValue = 3;
                break;
            case 'C': LetterGradeValue = 2;
                break;
            case 'D': LetterGradeValue = 1;
                break;
            case 'F': LetterGradeValue = 0;
                break;
            default: LetterGradeValue = 0;
                break;
        }

        ValueOfClass = CalculateClass(LetterGradeValue, CreditHours);
        return ValueOfClass;
    }

    public static double CalculateClass(double LetterGrade, double CreditHours)
    {
        Double CreditTotal;
        CreditTotal = CreditHours * LetterGrade;
        return CreditTotal;
    }

Here you probably want this. You need one while loop to take all the classes, the loop brakes if you say that you don't want to continue or put another input. You make the gradeInfoList  with gradeInfoList.Sum() function.
Also your variables should start with small letter, StudentName->studentName !
EDIT:
gpa List is collection which stores all your values which comes from InputGradeInfo(). 
What Sum() function is doing:
 double sum = 0;
 foreach(double d in gpa)
 {
     sum= sum + d; //(or sum+= d;) 
 }

In other words loop all the elements in gradeInfoList  collection and make the sum of them.
About the while loop-> this loop will executes till the condition in the brackets is broken. In this case you can add many classes till you click 'y' at the end. If you click something else from 'y' you will break the loop.
I add another list creditList which you will add as parameter to the InputGradeInfo. In this list you will store every credit per class. At the end you will have gradeInfoList .Sum()/creditList.Sum() and this will give you what you want.

