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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 田忠 高级黑马   /  2011-11-29 23:51  /  2485 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李荣壮 于 2011-11-30 07:57 编辑

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _17_if_else
{
    class Program
    {
        static void Main(string[] args)
        {
            
            int cenji = 89;
            if (cenji >= 90)
            {
                Console.WriteLine("A");
            }
            if (cenji >= 80 && cenji < 90)
            {
                Console.WriteLine("B");
            }
            if (cenji >= 70 && cenji < 80)
            {
                Console.WriteLine("C");
            }
            if (cenji >= 60 && cenji < 70)
            {
                Console.WriteLine("D");
            }
            else
            {
                Console.WriteLine("E");
            }

            Console.ReadKey();

              
        }
    }
}
               为什么结果会跳出两个??

评分

参与人数 1技术分 +1 收起 理由
朱勋 + 1

查看全部评分

5 个回复

倒序浏览
你上面的这段代码      
      if (cenji >= 60 && cenji < 70)
            {
                Console.WriteLine("D");
            }
            else
            {
                Console.WriteLine("E");
            }
是一个整体,和前面的几个if语句没有关联,所以执行了前面的一个if之后还是会执行这个,所以就表示如果接收的cenji不在cenji >= 60 && cenji < 70这个范围内就执行输出E
加上中间的一个判断输出B,所以就是输出两个数
你可以把中间的几条if改成else if条件,这样这些这就是一个if条件判断,有了匹配的就不会继续比较后面的了,
也可以在每个if里面加return也行

评分

参与人数 1技术分 +1 收起 理由
李荣壮 + 1

查看全部评分

回复 使用道具 举报
王伟 黑马帝 2011-11-30 09:53:38
藤椅
像这样的问题应当用else if,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int cenji = 89;
            if (cenji >= 90)
            {
                Console.WriteLine("A");
            }
            else if (cenji >= 80 && cenji < 90)
            {
                Console.WriteLine("B");
            }
            else if (cenji >= 70 && cenji < 80)
            {
                Console.WriteLine("C");
            }
            else if (cenji >= 60 && cenji < 70)
            {
                Console.WriteLine("D");
            }
            else
            {
                Console.WriteLine("E");
            }

            Console.ReadKey();

        }
    }
}

评分

参与人数 1技术分 +1 收起 理由
李荣壮 + 1

查看全部评分

回复 使用道具 举报
同意楼上的,else会和最近的if配对,形成一个条件,而上面的if 都是一个单独的判断条件。

评分

参与人数 1技术分 +1 收起 理由
李荣壮 + 1

查看全部评分

回复 使用道具 举报
懂了,谢谢大家,{:soso_e113:}
回复 使用道具 举报
          if (cenji >= 60 && cenji < 70)
            {
                Console.WriteLine("D");
            }
            else
            {
                Console.WriteLine("E");
            }
关键在于else  如果上面你不想else  可以写成
        if (cenji >= 60 && cenji < 70)
            {
                Console.WriteLine("D");
            }
        if(cenji <60)
         {
                Console.WriteLine("E");
            }
这样也许你比较明白 说实话多重if--else 有时候会搞混

评分

参与人数 1技术分 +2 收起 理由
李荣壮 + 2

查看全部评分

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