A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 朱传波 中级黑马   /  2013-2-25 16:31  /  1737 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 朱传波 于 2013-2-25 20:58 编辑

这是在if_else if 中的小练习


请为学生的成绩进行评级
            //成绩90以上,A;
            //    80~90.B(含80);
            //        70~80()含70,C;
            //            70~60(含60);D;
            //                60以下,E;

如果不用else if ,代码如下:
  1. namespace 学生考试成绩评测
  2. {
  3.     class Program
  4.     {
  5.         static void Main(string[] args)
  6.         {
  7.             //成绩90以上,A;
  8.             //    80~90.(含80),B;
  9.             //        70~80(含70),C;
  10.             //            70~60(含60),D;
  11.             //                60以下,E;
  12.             Console.WriteLine("请输入您的成绩");
  13.             int score = Convert.ToInt32(Console.ReadLine());
  14.             if (score >= 90)
  15.             {
  16.                Console.WriteLine("A");
  17.             }
  18.             if (score >= 80 && score < 90)
  19.             { Console.WriteLine("B"); }
  20.             if (score >= 70 && score < 80)
  21.             {
  22.                 Console.WriteLine("C");
  23.             }
  24.             if (score >= 60 && score < 70)
  25.             {
  26.                 Console.WriteLine("D");
  27.             }
  28.             else
  29.             {
  30.                 Console.WriteLine("E");//为什么每一次这句话都是输出语句???
  31.             }
  32.             Console.ReadKey();
  33.         }
  34.     }
  35. }
复制代码
疑问在于,每一次不管输入什么数字,最后的“E”都会输出,如图所示。求解答

还有,如果全部用 if 来编写的话,计算机的处理过程中,是否会将全部的  if 语句都走一遍?

另外想请教一下断点工具的使用方法,只是看到苏老师在用,并没有讲解,所以很迷茫啊。





评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

6 个回复

倒序浏览
本帖最后由 xiaoxiang_04 于 2013-2-25 16:43 编辑

错误:
你输入的数据会走每一个if语句,假设你输入的是90,程序输出A,然后会继续往下判断,最后两段代码
if (score >= 60 && score < 70)
            {
                Console.WriteLine("D");
            }
            else
            {
                Console.WriteLine("E");//为什么每一次这句话都是输出语句???
            }
输入的是90, if (score >= 60 && score < 70)不成立,所以系统会直接调用else的语句。
解决方法有两种
一个是使用
if{}  else if{} else if{} else {} 结构的判断,
还有一个是在每个if{}里面加个return,如果满足if条件就终止往下运行代码

这里没必要用断点,如果你要用的话,就在你觉得需要坚挺的代码前面,点一下出个红点,然后你运行代码,程序运行到断点会自动停止,这时你用鼠标放在那些变量上,会看到它的值等信息

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
if (score >= 60 && score < 70)

25.            {

26.                Console.WriteLine("D");

27.            }

28.            else

29.            {

30.                Console.WriteLine("E");//为什么每一次这句话都是输出语句???

31.            }

不可能每次都输出,如果大于等于60并且小于70时是不会输出的,你的逻辑有问题。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
用F9在你要加断点的地方加上断点,F10进行调试
回复 使用道具 举报
最后那个判断 可以这样写
if (score >= 60 && score < 70)

25.            {

26.                Console.WriteLine("D");

27.            }

28.            else if(score < 60)//在满足score小于60的情况下才执行

29.            {

30.                Console.WriteLine("E");

31.            }


关于断点的使用:在代码出设置断点,按F5 启动程序  按F10逐句往下执行但不会跳到调用的方法体重中执行 按F11执行到调用的方法时会跳到方法体重逐句执行。
希望对你有所帮助。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
xiaoxiang_04 发表于 2013-2-25 16:41
错误:
你输入的数据会走每一个if语句,假设你输入的是90,程序输出A,然后会继续往下判断,最后两段代码
  ...

豁然开朗!十分感谢xiaoxiang兄的解答,简明扼要,条理清晰!衷心希望管理员给予加分
回复 使用道具 举报
if (score >= 90)

15.            {

16.               Console.WriteLine("A");

17.            }

18.           else  if (score >= 80 && score < 90)   先把这里换成else-if

19.            { Console.WriteLine("B"); }





29.         else  if(score < 60)    这里也换成else-if

    {

30.                Console.WriteLine("E");//为什么每一次这句话都是输出语句???

31.            }

32.            Console.ReadKey();

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马