You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#课程作业问题:成绩列表统计功能报错求助

修正后的C#成绩统计程序
internal class Program
{
    public static void YourGrades()
    {
        List<int> gradesList = new List<int>();
        Console.WriteLine("Write a grade (0-5), press Enter to finish:");

        while (true)
        {
            string input = Console.ReadLine();
            // 空输入时退出循环
            if (string.IsNullOrWhiteSpace(input))
                break;

            // 尝试解析输入为整数,并验证范围
            if (int.TryParse(input, out int grade) && grade >= 0 && grade <= 5)
            {
                gradesList.Add(grade);
            }
            else
            {
                Console.WriteLine("Invalid input! Please enter a number between 0 and 5.");
            }
        }

        // 处理统计逻辑
        if (gradesList.Count == 0)
        {
            Console.WriteLine("No grades were entered.");
            return;
        }

        int totalGrades = gradesList.Count;
        double average = gradesList.Average();
        Console.WriteLine($"The average of your {totalGrades} grades is {average:F2}.");
    }

    static void Main(string[] args)
    {
        YourGrades();
    }
}

原代码核心问题及修正说明

  • 无限循环问题:原循环未在每次迭代后读取新输入,导致一旦进入循环就会无限执行添加操作。修正后改用while(true)循环,每次迭代都读取新输入,空输入时直接跳出循环。
  • 空字符串解析错误:原代码在输入为空时仍尝试解析为整数,会抛出FormatException。修正后先判断空输入,直接退出循环,避免无效解析。
  • 类型错误调用方法:原代码将单个整数num当作集合调用Average()和Length,这两个方法属于List<int>这类集合类型。修正后直接使用gradesList.Count获取成绩数量,gradesList.Average()计算平均分。
  • 输入验证缺失:原代码未验证输入是否在0-5范围内,修正后添加范围判断,非法输入时提示用户重新输入。
  • 类型不匹配问题:原代码将Average()返回的double类型结果赋值给string变量,修正后使用double类型接收,并通过{average:F2}格式化输出两位小数。

内容的提问来源于stack exchange,提问作者Uuno Purhaturo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 13:01:08