如果你不改需求还能做朋友 不然我就死给你看

流程控制

java零基础入门-核心语法篇(六) 流程控制

顺序结构

顺序结构就是从上到下,从左到有。如果不按照这个顺序来,就会发生错误,我们来看看

顺序错误

我们使用变量的顺序,一般是首先声明变量,再去使用变量,而如果你改变这个顺序的话,先使用,再声明,使用的时候就会报错。有些同学会问,为什么他不去楼下看看有没有,万一楼下有呢?没办法,他的智商暂时达不到。这样我们可以看到,在任何一个代码块里面,程序的执行都是从上到下。如果一个类里面有很多方法,方法的调用顺序就不一定了,这个后面再说。

这里我们看到了一个problems的窗口,这个窗口可以告诉我们详细的报错位置和报错信息,我们要学会使用这个工具帮助我们排除错误。如果你的界面里面没有,那么请这样打开它。

打开problems窗口

所有你想要的窗口,我们都可以通过这种方式来打开,提高我们的编码效率。


分支结构

来来来 ,说重点了,敲黑板~~~!!!

你以后工作有50%的概率甚至更高在写这个,if else 流程控制语句,当然有很多方法是可以替代这个重复工作的,比如用一点点设计模式啊,但是,我劝你3年内还是老老实实用这个吧。

首先,我们看看流程控制怎么用

流程

我们看到,如果modify是true的话,会打印 “我死给你看”,而modify是false的话,会执行“还能做朋友”,所以不修改需求,还能做朋友是正确的。这里要注意 if 后面的括号里,一定要是 boolean 类型的结果。上期讲的运算符里面有说过,比较运算和逻辑运算结果都是boolean,所以这个括号里要放比较运算和逻辑运算,当然直接放boolean类型变量也是可以的。

这个if else 其实有3种用法,我上面写的 if else 是最常用的,还有两种我们看看

常用的分支结构

只有一个 if ,需要对特殊情况进行处理的时候,用的比较多。比如一段代码是选择你喜欢什么狗,但是有调皮的人说我喜欢猫,这里加个if语句,如果喜欢猫请出门右转,喜欢狗的继续执行下面的代码。

......

if(喜欢猫){

    出门右转不送

}

请选择你喜欢的狗

if(...){

}else if(...){

} else {

}

......

if else 结构 , 一般用于非此即彼的逻辑判断,比如,要么不改需求,要么改需求,没有第三种情况了。这种结构使用if else。


一个if ,多个 else if ,一个else ,常用于对程序逻辑进行分别处理。比如一个宠物医院,来了狗看病怎么处理,来了猫怎么处理,现在人养的宠物越来越多了,什么猴啊,飞鼠啊,猪啊,这些来了怎么处理

if (狗){

}else if( 猫 ){

}else if(猪){

}

这里有个问题,首先是最后那个else其实是可以省略的,但是通常不建议这样做,因为,你会发现,你的程序会突然好像运行了,但是又像没运行,因为结果不在你设置的任何一个范围内,就不会有输出结果。所以加上else,可以保证你没有考虑到的情况得到输出。

请在最后加上else


再一个很重要的问题就是一定要留意多个语句一定要覆盖全集,并且最好不要有交集。啥意思?一脸懵比?上图

45岁的小鲜肉

首先看覆盖全集,显然这几个条件没有覆盖全集,如果小于或者等于15岁,就会不报错,不输出,找不到问题。然后就是交集的问题,为什么45岁还是小鲜肉?因为分支语句也是按照从上到下的顺序来判断的,如果写在前面的条件满足了,是不会再往下匹配的,而是直接结束这个分支语句,就是说他先判断了 45 > 15,这个结果是成立的,然后就直接输出了 “小鲜肉”,然后就结束了,不会往下去判断 45 > 15了。而这个错误也是经常会犯的逻辑错误,我们的分支结构不能有交集,比如我这里 45 即大于15 又大于40,满足两个条件,他就不会去我真实想要他去的地方。


覆盖全集没有交集

来看这个,覆盖了全集,没有交集,这样才会得到正确的答案。

还有一种要避免的情况,就是过多的层次分支嵌套,这样不仅难以组织逻辑,给阅读代码也带来很大的麻烦。要知道,你写的代码不一定只有你一个人看,可能会有同事啊,或者后来的同事啊会看你的代码,修改业务,所以代码一定要具有可读性。千万别写那种就你一个人认识的代码,也不要写逻辑过于混乱的代码,那样会有人边看代码边说 @#$!S@#%^B& 的。


不要写这种代码


再来说另外一种分支结构 switch

说实话,这个结构用的比较少,因为,写起来比较繁琐,而且功能可以被if else 完全取代,所以我们了解一下即可。

switch

switch后面的条件,是一个变量(petHospital),该变量的类型可以是 int,char,String (字符串类型,马上会说这个)。然后就讲完啦。。。


循环结构

这是一个考验智商的结构,本人刚开始接触这个结构的时候也是被绕的昏头转向,特别是嵌套循环,所以刚开始理解这个有困难很正常,千万不要自暴自弃。这个结构非常有用,用的好,我们可以使用一些算法让我们的代码运行的更加有效率,用的不好,电脑死机,服务器宕机都有可能,所以这个是重点中的重点,请好好理解,多加练习。

循环结构有以下几种

for 循环 :使用频率非常高,必须深刻理解,for循环是使用下标来标记元素的

foreach 循环:使用频率也很高,在某些场景下,和for循环可以相互替代,foreach不使用下标标记元素

while 循环:使用频率中等,一般用于处理流数据,在某些场景也可以被for循环替代

do while循环:很少使用,在某些特定场景会使用,知道即可,使用时查阅


本章篇幅有限,我们先把其他几种循环讲了,下一篇单独介绍for循环,因为它实在太重要了

while循环:我们来一个从0打印输出到100的例子

循环打印

循环结构需要初始化条件,就是你得告诉电脑,你要从哪开始。int intTest = 0; 就是初始化条件,从0开始。

while后面有个循环条件,里面是个boolean值,跟 if 后面那个一样,必须是布尔类型,它来决定是否继续下一次循环。

我这里直接在打印的地方写了迭代语句,迭代语句的作用就是改变初始化条件,让它用新的值进行下一次循环。

好吧,我知道,这个动态过程用语言来描述是苍白无力的,那我们动起来吧。


循环过程

WTF?我打印个100怎么执行了102次?

这里有个重要的概念,一定要养成习惯,就是在任何编程语言里面,数数都是从0开始,比如我们的下标,但是我们计算次数什么的会从1开始数,这样就会造成误解,从0打印到100,一共101次打印(从1数到100是100次,从0开始是101次),到102次时,循环条件返回false,停止循环。第102次是因为在判断条件的时候,就终止了,其实并不算执行完成。这样懂了吧。

这里很重要的是迭代语句,有了他,我们才能循环下去,有人说了,自增++写在后面是这样,那写在前面会是什么样。


自增在前面

其实很简单,他就是在打印之前就已经自增了,所以是从1开始打印的。看最后一次,我们先输出了intTest他是100的,然后打印++intTest是101,说明在打印之前已经完成了自增。这里还顺便复习了下上面的分支语句,我循环次数很多,但是我只想看最后一次的具体变化,我可以设定一个条件,比如intTest是100的时候,我再看发生了什么,而不是每条都看,那样会影响之前的结果,看起来不方便。

do while循环


do-while

其实如果理解了 while 循环,再看do-while,感觉是差不多的,值得注意的是while会先判断条件再执行代码,条件不过关不执行,而do-while会先执行再判断,即使不满足条件也非要执行一次。

好好理解while循环,特别是循环过程,每个变量,每个判断都是怎么变化的,不然下次讲for循环,就是这样...


生无可恋

你可能感兴趣的:(如果你不改需求还能做朋友 不然我就死给你看)