异常捕获+定值判断

一、异常捕获

1、异常:语法上没有错,但在程序运行的过程中,由于某些原因,程序出现错误

如果想要程序变得坚强一些,代码中应该经常性的使用try catch

哪行代码有可能出异常就try一下

try和catch中间不能有其他代码出现!!!

2、语法:

try{可能出现异常的代码}

catch{出现异常后要执行的代码}

3、执行过程:

如果try中的代码没有出现异常,那么catch中的代码不会执行。如果try中的代码出现了异常,那这行出现异常的代码后面所有代码都不会执行,直接跳到catch中执行代码。

 double num = 0;
            bool b = true;
            //将用户输入的数字乘以二再输出(try catch练习)
            Console.WriteLine("请输入你的数字");
            try
            {
               num = Convert.ToDouble(Console.ReadLine());//声明并接受用户输入

            }
           // double num =Convert.ToDouble(Console.ReadLine());//声明并接受用户输入
            catch
            {
                Console.WriteLine("只能输入数字哦");
                b = false;
            }
            if(b)//有个问题 我写的if(b=true) 
                 //但是运行时输入字母还是走了这段if代码,然后改成(b)就好了
            {
                Console.WriteLine("你的幸运数字是:{0}", (num + 1) * 2);

            }
           // Console.WriteLine("你的幸运数字是:{}", (num + 1) * 2);
            //如果出现异常,控制台运行catch里面的代码,这句代码也不用执行了
            //最好直接将这行代码放在try里面,但是为了练习bool,我们换一个做法

            Console.ReadLine();

注意:异常捕获的代码是最后加进去的,因为我们写代码的时候自己也不知道哪里可能出异常


           //momo年终工作评定,A级则工资涨500元;B级则涨200元;C级工资不变
            //D级工资降200元;E级工资降500元
            //设momo原工资为五千,请老板输入momo的评级,并且显示来年工资
            bool i=true;
            int salary = 5000;
            string level = "";
            Console.WriteLine("请输入momo的评级");
            level=Console.ReadLine();
            if (level == "A")
            {
                salary += 500;
            }
            else if (level=="B")
            {
                salary += 200;
            }
            else if (level == "C")
            {
                //工资不变
            }
            else if (level =="D")
            {
                salary -= 200;
            }
            else if(level=="E")
            {
                salary -= 500;
            }
            else
            {
                Console.WriteLine("输入ABCDE中的字母哦");
                i = false;
            }
            if (i == true)
            {
                Console.Write("momo明年工资为{0}", salary);
            }       
            Console.ReadLine();

二、switch-case 用来处理多条件的定值判断

语法:

switch(变量或者表达式的值)

{

case 值1:要执行的代码;

break;

case 值2:要执行的代码;

break;

case 值3:要执行的代码;

break;

...

default:要执行的代码;

break;

}

执行过程:

程序执行到switch处,首先将括号中“变量或者表达式的值”计算出来,然后用这个值和后面case后的值匹配,一旦匹配成功,则执行case后面的代码,有break则跳出switch-case结构。

如果跟每个case后的值都不匹配,如果有default中的语句,则执行default中的语句,如果没有,则该switch-case什么也不做。

 //momo年终工作评定,A级则工资涨500元;B级则涨200元;C级工资不变
            //D级工资降200元;E级工资降500元
            //设momo原工资为五千,请老板输入momo的评级,并且显示来年工资
            string level = "";//评级变量
            int salary = 5000;//momo初始工资
            Console.WriteLine("请老板给momo年终评级");
            level = Console.ReadLine();
            bool b=true;
            switch (level)
            {
                case  "A": salary += 500;
                    break;
                case "B": salary += 200;
                    break;
                case  "C": salary+=0;
                    break;
                case  "D": salary -= 200;
                    break;
                case  "E": salary -= 500;
                    break;
                default: 
                    b=false;
                    Console.WriteLine("请输入ABCDE中的字母哦");
                    break;
            }
            if (b)
            {
                Console.WriteLine("momo明年工资为{0}", salary);
            }          
            Console.ReadLine();
 //让用户输入姓名,然后显示出这个人上辈子是干嘛的
            bool b = true;
            Console.WriteLine("请输入柯南作品中女角色姓名");
            string name = "";
            name=Console.ReadLine();
            switch(name)
            {
                case "小兰": Console.WriteLine("新一"); break;
                case "灰原哀": Console.WriteLine("柯南"); break;
                case "和叶": Console.WriteLine("大版黑鸡"); break;
                case "妃英里": Console.WriteLine("毛利"); break;
                case "佐藤": Console.WriteLine("高木"); break;
                case "有希子": Console.WriteLine("工藤优作"); break;
                case "园子": Console.WriteLine("京极真"); break;
                case "明美": Console.WriteLine("秀一"); break;
                default: Console.WriteLine("请检查以下你的输入"); b = false; break;
            }
            if(b)
            {
                Console.WriteLine("等待越长久,重逢时也就越幸福");
            }
            Console.ReadLine();
65 views
Comments
登录后评论
Sign In
·

为什么 if (b = true) 分支会执行?

因为这是一个赋值语句,不是比较表达式。赋值语句将 b 的值置为 true,并返回 b,因此进入该分支。

你想要的是 if (b == true),当然,使用 if (b) 更好 relieved