using System;
    class StudentGrade
    {
       public  static void Main()
        {
            Console.Write("输入学生的百分制成绩:");
            int Grade=(int)Console.Read();
            switch (Grade/10) 
            { 
                case 9:
                case 10: Console.WriteLine("你的成绩为:A");
                    break;
                case 8: Console.WriteLine("你的成绩为:B");
                    break;
                case 7: Console.WriteLine("你的成绩为:C");
                    break;
                case 6: Console.WriteLine("你的成绩为:D");
                    break;
                default: Console.WriteLine("你的成绩为:E");
                   break;
            }
        }
    }
请问段程序为何只执行default后的语句

解决方案 »

  1.   

    Console.Write("输入学生的百分制成绩:");
      int Grade=(int)Console.Read();
    传递给Grade的值后面带有一个回车,你改为:
      int Grade=(int)Console.ReadLine();
      

  2.   

    不要用强制转换 string是引用类型int Grade=Convert.ToInt32(Console.ReadLine());
      

  3.   

    Console.Read()方法用于获得用户输入任何值的首字符的ASCII值
    Console.ReadLine()方法用于将获得的数据保存在字符串变量中
     
    int Grade = int.Parse(Console.ReadLine()); 
      

  4.   

    Console.Read 只读一个字符,最大的可能是 9,除以 10 以后是 0,当然是只执行 default1,用 ReadLine
    2,用 int.TryParse,因为用户可能输入非数字string input = Console.ReadLine();
    int grade;
    if(int.TryParse(input, out grade))
    {
      switch (grade/10)  
      ...
    }
    else
    {
    // 要求重新输入
    }