如何显示 WHILE 循环中输入的每个课程?C#.

本文关键字:输入 何显示 显示 循环 WHILE | 更新日期: 2023-09-27 18:33:49

我不确定如何显示用户输入的每个课程。目前只显示最后输入的课程。我没有想什么?

while (quit != "0")
{
    //get user data
    Console.WriteLine("Enter course # {0}:", counter);
    course = Console.ReadLine();
    Console.WriteLine("Enter grade value of 1-4 # {0}:", counter);
    grade = Convert.ToInt32 (Console.ReadLine());
    Console.WriteLine("Enter credit hours from 1-3 # {0}:",counter);
    creditHours = Convert.ToInt32 (Console.ReadLine());

    //calculate grade * creditHours and store in gradePoints
    gradePoints = grade * creditHours;
    //running total of credit hours and grades
    totalGradePoints += gradePoints;
    totalCreditHours += creditHours;
    Console.WriteLine("Press '0' to quit or any key to continue.");
    quit = Console.ReadLine();
    counter++;// adds one to counter
}//end while
// calculate gpa
double GPA = totalGradePoints / totalCreditHours;
//display course(s) credit hours and gpa
Console.WriteLine("Course(s): {0}", course);
Console.WriteLine("Credit hours: {0}",totalCreditHours);
Console.WriteLine("GPA: {0:n2}",GPA);

如何显示 WHILE 循环中输入的每个课程?C#.

你需要移动

 Console.WriteLine("Course(s): {0}", course);

在您的while循环内。您仅在循环结束后显示它。所以这就是为什么你看到最后一门课程。

如果您不想立即显示它们,请将课程存储到集合中,并在循环并显示它们后循环访问集合while并显示它们:

var courses = new List<string>();
while(...)
{
     ...
     course = Console.ReadLine();
     courses.Add(course);
     ...
}
foreach(var c in courses)
     Console.WriteLine(c);

您在 while 循环中设置变量,因此每次循环迭代都会覆盖相同的变量。

相反,请尝试使用 List<T> 对象或数组,两者都可以保存多个值,并考虑对数据进行class,因为它们都是关联的:

class CourseData
{
    public string Course { get; set; }
    public int Grade { get; set; }
    public nt CreditHours { get; set; }
    public int GradePoints { get { reutrn Grade * CreditHours; } }
}