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

C#成绩转换程序输入90未进入case4,触发默认分支问题求助

问题根源

你写的switch逻辑完全搞反了判断逻辑:你让grade去匹配case 1、case 2这些固定值,但实际输入的成绩是60-100的数值,根本不可能等于1、2、3、4,所以不管输入90还是其他合法成绩,都会直接走到default分支输出错误提示。

修正方案

下面给两种可行的修正方式,同时优化了输入验证,避免非数字输入导致程序崩溃:

方式1:用switch范围模式(C# 7+推荐写法)

这种写法最简洁直观,直接在case里判断成绩范围:

using System;

namespace GradeEquivalent
{
    class Grades
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter your grade: ");
            if (int.TryParse(Console.ReadLine(), out int grade))
            {
                switch (grade)
                {
                    case >= 60 and <= 69:
                        Console.WriteLine("Grade equivalent: D");
                        break;
                    case >= 70 and <= 79:
                        Console.WriteLine("Grade equivalent: C");
                        break;
                    case >= 80 and <= 89:
                        Console.WriteLine("Grade equivalent: B");
                        break;
                    case >= 90 and <= 100:
                        Console.WriteLine("Grade equivalent: A");
                        break;
                    default:
                        Console.WriteLine("Invalid grade input.");
                        break;
                }
            }
            else
            {
                Console.WriteLine("Please enter a valid integer grade.");
            }
        }
    }
}

方式2:先分组再用switch(兼容低版本C#)

如果你的项目用的是C# 7以下版本,不支持范围模式,可以先把成绩转换成对应分组编号,再用switch匹配:

using System;

namespace GradeEquivalent
{
    class Grades
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter your grade: ");
            int grade;
            if (int.TryParse(Console.ReadLine(), out grade))
            {
                int gradeGroup = 0;
                if (grade >= 60 && grade <= 69)
                    gradeGroup = 1;
                else if (grade >= 70 && grade <= 79)
                    gradeGroup = 2;
                else if (grade >= 80 && grade <= 89)
                    gradeGroup = 3;
                else if (grade >= 90 && grade <= 100)
                    gradeGroup = 4;

                switch (gradeGroup)
                {
                    case 1:
                        Console.WriteLine("Grade equivalent: D");
                        break;
                    case 2:
                        Console.WriteLine("Grade equivalent: C");
                        break;
                    case 3:
                        Console.WriteLine("Grade equivalent: B");
                        break;
                    case 4:
                        Console.WriteLine("Grade equivalent: A");
                        break;
                    default:
                        Console.WriteLine("Invalid grade input.");
                        break;
                }
            }
            else
            {
                Console.WriteLine("Please enter a valid integer grade.");
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者Hanny Lee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 04:31:30