跟siki老师学C#第四天(学习部分)

来源:互联网 发布:手机淘宝视频下载 编辑:程序博客网 时间:2024/04/20 23:20

上节课的最后我们介绍了if判断分支,我们接着介绍流程控制里面的分支:
除了之前说的if-else分支之外,我们还有另一个分支:switch-case分支。

switch-case分支:

int num = Convert.ToInt32(Console.ReadLine());switch(num){    case 0:        Console.WriteLine("您输入的数字是0");         break;    case 1:        Console.WriteLine("您输入的数字是1");        break;    case 2:        Console.WriteLine("您输入的数字是2");        break;    case 3:        Console.WriteLine("您输入的数字是3");        break;    case 4:        Console.WriteLine("您输入的数字是4");        break;    //case还可以放在一起:    case 5:    case 6:        Console.WriteLine("您输入的值已经到达边界值!");        break;    default:        Console.WriteLine("您的输入有误!");        break;}Console.ReadKey();

在switch-case分支中,switch是判断条件,case是分支,上面这个语句首先在switch中判断num的值,当num等于0时,执行case 0后面的语句,当num等于1时,执行case 1后面的语句,当num等于2时,执行case 2后面的语句,以此类推。
最后有个default,意思是“默认”,就是说当switch中的判断条件不为case后面的所有值时,就认为它的值是默认的,就执行default后面的语句。

上面说的if、if-else、switch-case都是分支语句,下面介绍循环语句:while循环、do-while循环和for循环

while循环:

int num = 0;while(num<=20){    Console.WriteLine(num);    num++;  //如果不加上这一句,num就恒等于0,它小于20就恒成立,所以Console.WriteLine(num)会一直执行下去就是一个死循环}

while后面就是判断条件,它判断返回的结果是是bool值,只有它的判断条件是True时,才会执行花括号里面的语句,当判断条件为False时,while根本不理会你,因为你不够格,没有权利让我执行我里面的代码了。
这里要注意不要弄出死循环了!!!

while循环之后我们就学习do-while循环,其实这两个是相似的:

int num = 0;do{    Console.WriteLine(num);    num++;}while(num<=20);

根据代码自上而下的顺序我们可以看出do-while循环实际上是先执行循环体,然后才进行条件判断,它和while的区别就像a++和++a的区别一样。

它们都是判断while里面的条件,但不同的是do-while循环中循环体的执行次数大于等于1,而while循环中循环体的执行次数则是大于等于0.一般do-while循环不常用,大多数情况下用while循环要比do-while循环更方便一些。

无论是do-while循环还是while循环,它们有一个共同点:容易产生死循环,这是相对于for循环来说的,接下来说说for循环来解释一下:

for (int i = 0; i <= 20;i++ )   //注意for循环括号里面的内容的执行顺序;初始化可以不写;条件变化也可以不写;判断条件也可以不写,但那样的话就是死循环了{    Console.WriteLine(i);}

这里说的不写不是说不需要写,而是可以不用放在这里来写,可以放到别的位置来写:

int num = 0;for (; num <= 20; )//可以不写,但是格式要保持{    Console.WriteLine(num);    num++;  //依具体情况选择条件变化}

我们看,for循环中一般都有类似于上面“num++”的语句,无论num多小,也无论判断条件有多大,for循环总有终止的时候,(一般情况下都会终止,但是极个别会出现没有“num++”语句,那就是死循环了)。

我们在写for循环的时候一般会下意识地写:

for(int i=0;i<=var;i++){    //balabalabalabala}

这里我们顺带着就把条件以及上下限确定了,但是while循环和do-while循环判断的时候只是简单的判定,范围还是要特意去写,稍有遗漏就容易造成死循环。

但是我们有时候也可以利用死循环这一特性:

while(true){    int i = Convert.ToInt32(Console.ReadLine());    if(i==0)    {        Console.WriteLine("抓住0号了!");        break;    }}Console.ReadKey();

这里写图片描述
只要我没有输入0,这个循环就根本停不下来!利用这个特性我们可以实现很多逻辑功能。三种循环方式都是相通的,一种方法可以实现,稍微改变一下就可以用另一个方法来实现。

到这里我们流程控制的分支和循环就已经学习完毕了。

在循环控制里面我们还有一个知识点没有说明:死循环或者说普通循环怎么跳出?
在执行某个循环的时候,我想让程序在某一个循环的时候当即停止循环,跳到这个循环的外面,怎么办呢?

我们上面有一个没说明的break就是解决这个问题的:

while(true){    int i = Convert.ToInt32(Console.ReadLine());    if(i==0)    {        Console.WriteLine("抓住0号了!");        break;    }}Console.ReadKey();

还是这个例子,不输入0的时候就是一个死循环,输入0之后我们达到目的了,这个循环体就没有必要继续循环了,所以我们要跳出,用到了break!
break是跳出离它最近的循环体!!!break是跳出离它最近的循环体!!!break是跳出离它最近的循环体!!!重要的事情说三遍,至少这是我不太了解的地方。
如:

while (true){    while (true)    {        int i = Convert.ToInt32(Console.ReadLine());        if (i == 0)        {            Console.WriteLine("抓住0号了!");            break;        }    }    Console.WriteLine("这是内循环!");}Console.WriteLine("这是外循环!");Console.ReadKey();

这里写图片描述
从结果中,我们可以明确看到,它是跳出了从第三行开始,第十一行结束的循环体,而不是从第一行开始,第十四行结束的循环体。

为什么要强调break是跳出距离它最近的循环体呢?那是因为循环嵌套的使用时要注意break跳出的正确位置,分析失误的话有可能会出现隐患的。

况且跳出语句也不止break一种,我们之前介绍了goto语句,显然,goto语句的特性也可以用来跳出循环,还是那句话:不推荐使用goto语句,它会使代码的阅读性变差。

另外还有一种语句经常能用到:return。

return就比较霸道和强势了,我们说跳出暂时只是说跳出循环体,而return则是跳出当前方法,这是什么概念?暂时只要知道一个方法可以包含无数个循环体就好了。

对了,还有一个很重要且经常能用到的语句差点忘了,那就是:continue!
要说它们几个跳出的方法有没有比较相近的,那continue和break要更近一些,goto不推荐用,就不考虑,return太强悍,就剩continue和break了。

break是剩下的语句不继续执行了,跳出当前循环,循环就终止了;而continue则是剩下的语句不继续执行了,跳过当前循环,进入下一个循环,循环还在继续!

这就是两者的区别,我们看一个实例:

int sum = 0;while (true){    int num = Convert.ToInt32(Console.ReadLine());    if (num % 2 != 0)    {        Console.WriteLine("您本次输入的是奇数,不能加进去!");        continue;    }    else    {        sum += num;        Console.WriteLine("现在的结果是" + sum);        if (sum >= 100)        {            Console.WriteLine("最终的结果是" + sum);            break;        }    }}

当输入的数字是奇数时,下面的语句不执行了,进入下一个循环(要求用户输入),知道最终的和大于等于100时,循环才被终止。

以上是跳出循环的几种方法。

今天的学习内容大概就是这些,来总结一下:
我们说了if分支、if-else分支,今天继续说了switch-case分支;
分支介绍完毕后,介绍循环:while循环、do-while循环和for循环;
接着就是循环跳出的几种方法:break、return、goto、continue,其实也不能说是循环跳出,说循环终止更准确些吧。

今天学习就到这里,欢迎大家对内容进行批评指正,万分感谢!
接下来用博客记录十三道练习题吧!

0 0
原创粉丝点击