黑马程序员技术交流社区

标题: 关于if和else [打印本页]

作者: 田忠    时间: 2011-11-29 23:51
标题: 关于if和else
本帖最后由 李荣壮 于 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();

              
        }
    }
}
               为什么结果会跳出两个??
作者: 周敏_.net    时间: 2011-11-30 00:49
你上面的这段代码      
      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也行
作者: 王伟    时间: 2011-11-30 09:53
像这样的问题应当用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();

        }
    }
}

作者: 谭显锋    时间: 2011-11-30 10:00
同意楼上的,else会和最近的if配对,形成一个条件,而上面的if 都是一个单独的判断条件。
作者: 田忠    时间: 2011-11-30 12:03
懂了,谢谢大家,{:soso_e113:}
作者: 李海龙    时间: 2011-11-30 14:32
          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 有时候会搞混




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2