C#第四天

255 阅读6分钟

1、异常捕获 我们在程序中经常会出现各种各样的异常,你如果想要你的程序变得坚强一些。 在你的代码中应该经常性的使用try-catch来进行异常捕获。

哪行代码有可能出现异常,你就踹它一脚。 语法: try {  可能会出现异常的代码;  ....  ...  ... } //try和catch之间不能有其他的代码 catch {  出现异常后要执行的代码; }

执行过程:如果try中的代码没有出现异常,那么catch中的代码不会执行。 如果try中的代码出现了异常,那怕这行出现异常的代码后面还有一百行都不会执行了, 而是直接跳到catch中执行代码

2、变量的作用域 变量的作用域就是你能够使用到这个变量的范围。 变量的作用域一般从声明它的那个括号开始到那个括号所对应的结束的括号结束。 在这个范围内,我们可以访问并使用变量。超出这个范围就访问不到了

3、switch-case 用来处理多条件的定值的判断。 语法: switch(变量或者表达式的值) {  case 值1:要执行的代码;  break;  case 值2:要执行的代码;  break;  case 值3:要执行的代码;  break;  ..........  default:要执行的代码;  break; } 执行过程:程序执行到switch处,首先将括号中变量或者表达式的值计算出来, 然后拿着这个值依次跟每个case后面所带的值进行匹配,一旦匹配成功,则执行 该case所带的代码,执行完成后,遇到break。跳出switch-case结构。 如果,跟每个case所带的值都不匹配。就看当前这个switch-case结构中是否存在 default,如果有default,则执行default中的语句,如果没有default,则该switch-case结构 什么都不做。

4、循环结构 while循环: while(循环条件) {  循环体; } 执行过程:程序运行到while处,首先判断while所带的小括号内的循环条件是否成立, 如果成立的话,也就是返回一个true,则执行循环体,执行完一遍循环体后,再次回到 循环条件进行判断,如果依然成立,则继续执行循环体,如果不成立,则跳出while循环。 在while循环当中,一般总会有那么一行代码,能够改变循环条件,使之终有一天不再成立, 如果没有那么一行代码能够改变循环条件,也就是循环条件永远都成立,我们称之这种循环 叫做死循环。 最简单的最常用的死循环: while(true) {

}

特点:先判断,再执行,有可能一遍循环都不执行。

5、break 1)、可以跳出switch-case结构。 2)、可以跳出当前循环。 break一般不单独的使用,而是跟着if判断一起使用,表示,当满足某些条件的时候,就不再循环了。

6、do-while循环。 语法: do {  循环体; }while(循环条件); 执行过程:程序首先会执行do中的循环体,执行完成后,去判断do-while循环的循环条件, 如果成立,则继续执行do中的循环体,如果不成立,则跳出do-while循环。 特点:先循环,再判断,最少执行一遍循环体。

01复习

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

namespace _01复习
{
    class Program
    {
        static void Main(string[] args)
        {
            //int number = 10;
            ////number++;
            //int result = 10 + --number;
            //Console.WriteLine(result);
            //Console.WriteLine(number);
            //Console.ReadKey();

            //int number = 10;

            //number += 100;


            //   > < >= <= == !=
            //&& || !
            // bool  true false

            // if  if -else  if else-if


        }
    }
}

02异常捕获

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

namespace _02异常捕获
{
    class Program
    {
        static void Main(string[] args)
        {
            //语法上没有错误,在程序运行的过程当中,由于某些原因程序出现了错误,不能再正常的运行。
            bool b = true;
            int number=0;//声明了一个变量
            Console.WriteLine("请输入一个数字");
            try
            {
                //abc
                 number = Convert.ToInt32(Console.ReadLine());//赋值

            }
               // Console.WriteLine("fdsfdsfds");
            catch
            {
                Console.WriteLine("输入的内容不能够转换成数字");
                b = false;
            }
            //我们如果要执行下面这行代码,需要满足某些条件。
            //让代码满足某些条件去执行的话,使用bool类型
            if (b)
            {
                Console.WriteLine(number * 2);//使用
            }
            Console.ReadKey();
        }
    }
}

03switch-case

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

namespace _03switch_case
{
    class Program
    {
        static void Main(string[] args)
        {
            //李四的年终工作评定,如果定为A级,则工资涨500元,如果定为B级,
            //则工资涨200元,如果定为C级,工资不变,如果定为D级工资降200元,
            //如果定为E级工资降500元.
            //设李四的原工资为5000,请用户输入李四的评级,然后显示李四来年的工资
            bool b = true;
            double salary = 5000;
            Console.WriteLine("请输入对李四的年终评定");//a b c d e  乱七八糟
            string level = Console.ReadLine();

            //switch(变量或者表达式的值)
            //{
            //    case 值1:要执行的代码;
            //    break;
            //    case 值2:要执行的代码;
            //    break;
            //    case 值3:要执行的代码;
            //    break;
            //    ..........
            //    default:要执行的代码;
            //    break;
            //}
            switch (level)
            {
                case "A": salary += 500;
                    break;
                case "B": salary += 200;
                    break;
                case "C": break;
                case "D": salary -= 200;
                    break;
                case "E": salary -= 500;
                    break;
                default: Console.WriteLine("输入有误,程序退出");
                    b = false;
                    break;
            }
            if (b)
            {
                Console.WriteLine("李四明年的工资是{0}元", salary);
            }
            Console.ReadKey();


            //ctrl+k+s
            #region if else-if的做法
            //if (level == "A")
            //{
            //    salary += 500;//salary=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//输入的不是ABCDE其中之一
            //{
            //    Console.WriteLine("输入有误,程序退出");
            //    b = false;
            //}
            //if (b)
            //{
            //    Console.WriteLine("李四来年的工资是{0}", salary);
            //}
            #endregion
            Console.ReadKey();


            //0 0.5 1 1.5 2


        }
    }
}

04switch-case练习

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

namespace _04switch_case练习
{
    class Program
    {
        static void Main(string[] args)
        {
            //让用户输入姓名,然后显示出这个人上辈子是什么职业。
            //Console.WriteLine("请输入一个姓名,我们将显示出来这个人上辈子的职业");
            //string 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;
            //    default: Console.WriteLine("不认识,估计是一坨翔");
            //        break;
            //}
            //Console.ReadKey();




                     // 成绩>=90 :A
                     //90>成绩>=80 :B
                     //80>成绩>=70 :C
                     //70>成绩>=60 :D
                     //         成绩<60  :E

            Console.WriteLine("请输入一个考试成绩");
            int score = Convert.ToInt32(Console.ReadLine()); //0-100

            switch (score/10)//你要把范围 变成一个定值
            {
                case 10: //case 10要执行的代码跟case 9是一样的
                case 9: 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;
            }
            Console.ReadKey();

        }
    }
}

05判断闰年

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

namespace _05判断闰年
{
    class Program
    {
        static void Main(string[] args)
        {
            //请用户输年份,再输入月份,输出该月的天数.(结合之前如何判断闰年来做)
            Console.WriteLine("请输入一个年份");
            try
            {
                int year = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("请输入一个月份");
                try
                {
                    int month = Convert.ToInt32(Console.ReadLine());//1-12
                    if (month >= 1 && month <= 12)
                    {
                        int day = 0;//声明一个变量用来存储天数
                        switch (month)
                        {
                            case 1:
                            case 3:
                            case 5:
                            case 7:
                            case 8:
                            case 10:
                            case 12: day = 31;
                                break;
                            case 2:
                                //由于2月 有平年和闰年的不同  所以首先要判断一下当年是不是闰年
                                if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
                                {
                                    day = 29;
                                }
                                else
                                {
                                    day = 28;
                                }
                                break;
                            //4 6  9 11
                            default: day = 30;
                                break;
                        }

                        Console.WriteLine("{0}年{1}月有{2}天", year, month, day);
                    }//if判断的括号
                    else
                    {
                        Console.WriteLine("输入的月份不符合要求,程序退出");
                    }
                }//try月份括号
                catch//跟月份配对
                {
                    Console.WriteLine("输入的月份有误,程序退出");
                }
            }//try年份的括号
            catch//跟年份的try配对
            {
                Console.WriteLine("输入的年份有误,程序退出");
            }
            Console.ReadKey();
        }
    }
}

06循环结构

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

namespace _06循环结构
{
    class Program
    {
        static void Main(string[] args)
        {
            //向控制台打印100遍 下次考试我一定要细心
            //循环体:Console.WriteLine("下次考试我一定要细心");
            //循环条件:打印的次数小于100遍

            //需要定义一个循环变量用来记录循环的次数 没循环一次,循环变量都应该自身加1
            //int i = 0;
            //while (i < 100)
            //{
            //    Console.WriteLine("下次考试我一定要细心\t{0}",i);
            //    i++;//没循环一次,都要自身加1,否则就是死循环
            //}
            //Console.ReadKey();


           // Console.WriteLine("下次考试我一定要细心");

            //求1-100之间所有整数的和
            //求1-100之间所有偶数的和
            //循环体:累加的过程
            //循环条件:i<=100
            //int i = 1;
            //int sum = 0;//声明一个变量用来存储总和
            //while (i <= 100)
            //{
            //    if (i % 2 != 0)
            //    {
            //        sum += i;

            //    }
            //    i++;
            //}
            //Console.WriteLine(sum);
            //Console.ReadKey();





        }
    }
}

07、break关键字的用法

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

namespace _07_break关键字的用法
{
    class Program
    {
        static void Main(string[] args)
        {
            //int i = 1;
            //int j=1;
            //while (i <= 10)
            //{
            //    while (j <= 10)
            //    {
            //        Console.WriteLine("我是里面的while循环");
            //        j++;
            //        break;
            //    }
            //    Console.WriteLine("我是外面的while循环");
            //    i++;
            //}
            //Console.ReadKey();


            //int i = 0;
            //while (i < 10)
            //{
            //    Console.WriteLine("Hello 酷狗");
            //    break;
            //}
            //Console.ReadKey();

            // 要求用户输入用户名和密码 用户名只要不是admin 密码不是888888
            //循环体:提示用户输入用户名 我们接收  密码 接收 判断是否登陆成功
            //循环条件:用户名或密码错误
            string userName = "";
            string userPwd = "";
            while (userName != "admin" || userPwd != "888888")
            {
                Console.WriteLine("请输入用户名");
                userName = Console.ReadLine();
                Console.WriteLine("请输入密码");
                userPwd = Console.ReadLine();
            }
            Console.WriteLine("登陆成功");
            Console.ReadKey();
        }
    }
}

08while循环的3个练习

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

namespace _08while循环的3个练习
{
    class Program
    {
        static void Main(string[] args)
        {
            //输入班级人数,然后依次输入学员成绩,计算班级学员的平均成绩和总成绩
            //10
            //循环体:提示输入学员成绩,接收,并转换成整数类型,累加到总成绩当中
            //循环条件:循环的次数小于等于班级人数

            //Console.WriteLine("请输入班级人数");
            //int count = Convert.ToInt32(Console.ReadLine());
            //int sum = 0;//用来存放总成绩
            //int i=1;//声明一个循环变量用来记录循环的次数
            //while (i <= count)
            //{
            //    Console.WriteLine("请输入第{0}个学员的考试成绩",i);
            //    int score = Convert.ToInt32(Console.ReadLine());
            //    //表示把每一个学员的成绩累加到总成绩当中
            //    sum += score;
            //    i++;
            //}
            //Console.WriteLine("{0}个人的班级总成绩是{1}平均成绩是{2}",count,sum,sum/count);
            //Console.ReadKey();


            //老师问学生,这道题你会做了吗?如果学生答"会了(y)",
            //则可以放学.如果学生不会做(n),则老师再讲一遍,再问学生是否会做了......
            //直到学生会为止,才可以放学.
            //直到学生会或老师给他讲了10遍还不会,都要放学


            //放学的两个条件:
            //1、会了
            //2、讲完第十遍 不管你会不会 我都放学

            //循环体:老师不停的提问,学生不停的回答,老师还要不停得奖
            //循环条件:学生不会、讲的次数小于10遍
            //string answer = "";
            //int i = 0;
            //while (answer !="yes" && i < 10)
            //{
            //    Console.WriteLine("这是我第{0}遍给你讲,你会了么?yes/no",i+1);
            //    answer = Console.ReadLine();//yes no
            //    //如果学生回答的是 会了 此时应该跳出循环
            //    if (answer == "yes")
            //    {
            //        Console.WriteLine("会了那就放学!!!");
            //        break;
            //    }
            //    i++;
            //}


            //2006年培养学员80000人,每年增长25%,
            //请问按此增长速度,到哪一年培训学员人数将达到20万人?

            //循环体:人数每年增长25%
            //循环条件:人数>=20万

            //double people = 80000;
            //int year = 2006;
            //while (people < 200000)
            //{
            //    people *= 1.25;
            //    year++;
            //}

            //Console.WriteLine("到第{0}年的时候人数将达到20万人",year);

            //Console.ReadKey();



            //提示用户输入yes或者no
            //要求:只能输入yes或者no,只要不是yes或者no就要求用户一直重新输入

            //循环体:提示用户输入 我们接收并且判断
            //循环条件:输入的不能是yes或者no

            //string input = "";//yes
            //while (input != "yes"&& input != "no")
            //{
            //    Console.WriteLine("请输入yes或者no");
            //    input = Console.ReadLine();
            //}



            //提示用户输入用户名和密码 要求用户名等于admin密码等于888888
            //只要用户名错误或者密码错误就重新输入
            //但是,最多只能输入3次

            //循环体:提示用户输入用户名和密码  接收  判断
            //循环条件:用户名或者密码错误  最多错误3次

            //int i = 1;
            //string userName = "";
            //string userPwd = "";
            //while ((userName != "admin" || userPwd != "888888") && i <= 3)
            //{
            //    Console.WriteLine("请输入用户名");
            //    userName = Console.ReadLine();
            //    Console.WriteLine("请输入密码");
            //    userPwd = Console.ReadLine();
            //    i++;
            //}
            //Console.ReadKey();


            //写两个循环
            //第一个循环提示用户A输入用户名 要求A的用户名不能为空,只要为空,就要求A一直重新输入

            //循环体:提示A输入用户名 接收  判断
            //循环条件:用户名为空

            string userNameA = "";
            while (userNameA == "")
            {
                Console.WriteLine("请输入用户名,不能为空");
                userNameA = Console.ReadLine();
            }
            //  Console.ReadKey();



            //第二个循环提示用户B输入用户名,要求B的用户名不能跟A的用户名相同 并且不能为空
            //只要为空,并且跟A的用户名相同,就一直提示用户B重新输入用户名


            //循环体:提示输入B的用户名 接收判断
            //循环条件:用户名为空 或者跟A的相同

            Console.WriteLine("请输入用户名,不能跟A相同,并且不能为空");
            string userNameB = Console.ReadLine();
            while (userNameB == "" || userNameB == userNameA)
            {
                if (userNameB == "")
                {
                    Console.WriteLine("用户名不能为空,请重新输入");
                    userNameB = Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("用户名B不能跟A的用户名相同,请重新输入");
                    userNameB = Console.ReadLine();
                }
            }

            Console.ReadKey();





        }
    }
}

09do-while循环

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

namespace _09do_while循环
{
    class Program
    {
        static void Main(string[] args)
        {
            //明天小兰就要登台演出了,老师说再把明天的演出的歌曲唱一遍,
            //如果满意,小兰就可以回家了.否则就需要再练习一遍,直到老师满意为止.(y/n)

            //循环体:小兰唱了一遍 问老师 满意么?老师回答
            //循环条件:老师不满意
            //Console.WriteLine("老师我唱的你满意么?");
            //string answer = Console.ReadLine();
            //while (answer == "no")
            //{
            //    Console.WriteLine("老师,我再唱一遍,你满意么?");
            //    answer = Console.ReadLine();
            //}
            //遇见这种首先执行一遍循环体,拿着执行后的结果再去判断是否执行循环的循环。
            //我们推荐使用do-while循环。
            //string answer = "";
            //do
            //{
            //    Console.WriteLine("老师,我唱的你满意么?yes/no");
            //    answer=Console.ReadLine();
            //}while(answer=="no");
            //Console.WriteLine("OK,放学回家~~~");
            //Console.ReadKey();


            //要求用户输入用户名和密码,只要不是admin、888888就一直提示用户名或密码错误,请重新输入
            //string name = "";
            //string pwd = "";
            //do
            //{
            //    Console.WriteLine("请输入用户名");
            //    name = Console.ReadLine();
            //    Console.WriteLine("请输入密码");
            //    pwd = Console.ReadLine();
            //} while (name != "admin" || pwd != "888888");
            //Console.WriteLine("登陆成功");
            //Console.ReadKey();


            //练习3:不断要求用户输入学生姓名,输入q结束.

            string name = "";
            while (name != "q")
            {
                Console.WriteLine("请输入学员姓名,输入q结束");
                name = Console.ReadLine();
            }
            Console.ReadKey();

            //do
            //{
            //    Console.WriteLine("请输入学员姓名,输入q结束");
            //    name = Console.ReadLine();

            //}while(name!="q");
            //Console.ReadKey();


        }
    }
}