用于计算GPA的C#简单控制台应用程序(帮助)

时间:2014-11-04 15:38:30

标签: c# console calculator

我是一名新手程序员,仍然是C#的新手。我想知道为什么我的应用程序无法正确计算用户的GPA。代码看起来很好。如果有改进我的代码的提示,我感激不尽。

例如,如果用户为信用单元5的模块#1输入A级,为信用单元2输入模块#2的B级,则在按0退出后,GPA计算将为0.0

基本上,用户可以为他想要的任意数量的模块计算他的GPA。模块和信用单元的算法似乎没问题,但我仍然不明白为什么GPA不正确。

class Program
{
    static void Main(string[] args)
    {
        Console.Write("\n********************************************\n");
        int creditUnit = 0;
        int totalCreditUnit = 0;

        char grade = ' ';
        int gradePoint = 0;
        int total = 0;

        int counter = 0;
        double GPA = 0;

        do
        {
            Console.Write("Enter grade for module #{0} (press 0 to exit): ", counter += 1);
            // write some code to prevent user from entering more than 10
            char userInput = char.Parse(Console.ReadLine());

            if (userInput == '0')
            {
                break;
            }
            else
            {
                grade = userInput; //assigns value for userInput into gradePoint
                Console.Write("Enter credit unit(s) for grade: ");
                totalCreditUnit = int.Parse(Console.ReadLine());

                switch (grade)
                {
                    case 'A': gradePoint += 4;
                        break;
                    case 'B': gradePoint += 3;
                        break;
                    case 'C': gradePoint += 2;
                        break;
                    case 'D': gradePoint += 1;
                        break;
                }
                total += creditUnit * gradePoint;
                totalCreditUnit += creditUnit;
            }

        } while (grade != 0);

        GPA = total  / totalCreditUnit;
        Console.Write("Your GPA this semester is {0:F2}", GPA);

        Console.ReadKey();
    }
}

1 个答案:

答案 0 :(得分:0)

这是你的问题:

totalCreditUnit = int.Parse(Console.ReadLine());

那应该是creditUnit而不是totalCreditUnit。后来你正在做:

        total += creditUnit * gradePoint;
        totalCreditUnit += creditUnit;

creditUnit始终为零,因此您永远不会向总计添加任何内容,并始终将零除以totalCreditUnit

现在是学习在Visual Studio中使用调试器的好时机。如果您自己检查了totaltotalCreditUnit的值,您会很快发现这一点。在执行除法操作时,我也会将它们加倍。