您的位置 首页 java

“全栈2019”Java第二十五章:流程控制语句中循环语句while

难度

初级

学习时间

30分钟

适合人群

零基础

开发语言

Java

开发环境

  • JDK v11
  • IntelliJ IDEA v2018.3

1.什么是流程控制语句?

第一句:

源文件中的语句通常按照它们出现的顺序从上到下执行。

什么是源文件?

在Java中,源文件就是Java类型的文件。

什么是语句?

以分号结尾的就是一条语句。上面有4条语句。

那什么又是“按顺序从上到下执行”?

我们来看一段示例代码:

这个程序输出的结果是:

输出的结果的顺序和它对应的输出语句顺序一致,也是从上到下,依次执行输出。

接着往下看下面一段话:

但是,流程控制语句通过使用决策,循环和分支来分解执行流程,使您的程序能够有条件地执行特定的代码块。

其中,我们的程序执行顺序是可以被控制的,也就是说原来显示输出的是“ABCD”,那么我可以让他只输出“AD”,怎么做到的呢,那就需要和流程控制语句的配合。流程控制语句有三类:

决策语句:if-then,if-then-else,switch

循环语句:for,while,do-while

分支语句:break,continue,return

接下来,本章讲解循环语句while。

2.显示输出“生日快乐”100遍

在讲解循环语句while之前,我们先来看一个问题:显示输出1遍“生日快乐”。

代码体现:

运行结果:

现在,我们需要说10声“生日快乐”,也就是显示输出10遍“生日快乐”。

代码体现:

运行结果:

那么,要说100遍呢?写100遍?不光是累死,效率也太低了,有没有一种办法,我想说多少遍,自动显示输出多少遍。换言之,我想说100遍“生日快乐”,然后将“生日快乐”循环100遍。

循环在Java中怎么表示呢?下面我们就来一起学习Java中是怎么循环的。

3.循环语句while

循环语句会重复执行,直到 条件表达式 为false结束。

循环语句while格式如下:

在循环刚开始时,会计算一次条件表达式的值。

举一个例子,比如,我们需要显示输出3遍“生日快乐”。

首先我们得先用一个数字记录当前已经说了几遍“生日快乐”,说到第三遍的时候就停下来。于是,定一个整数类型的变量来记录说话的次数:

用count变量来记录说话的次数,因为最初一句话都没说,所以说话的次数就是0。后面说一次话就+1次。

接着,我们需要来写while循环的条件表达式,因为我们要说三遍“生日快乐”,所以说话的次数不能超过3次:

代码书写完毕,好像可以了,运行看看:

完了,发现停不下来,为什么停不下来呢?不是说好了说三次就停止吗?

怎么没有停下来呢?

我们回过头来看看,最初说话的次数是0,说第一次话的时候,count应该为+1才对,0+1=1,说第二次话的时候1+1=2,说第三次话的时候2+1=3,说三次就够了,就可以停下来了。但是,我们的程序并没有累加count,也就是没有累加说好次数,导致说好次数一直是0,count<3一直为true,循环体一直被执行。

接下来,我们更改代码:

运行结果:

程序正常了。这也给我们一些结论:

while由循环条件、循环体两部分组成。

循环条件(被小括号包裹着):

循环体(被大括号包裹着):

我们来看一下循环语句的执行过程:

第一次循环,count = 0;count < 3;循环条件返回true。执行循环体,count++,此时count = 1;然后显示输出“生日快乐”;

第二次循环,count = 1;count < 3;循环条件返回true。执行循环体,count++,此时count = 2;然后显示输出“生日快乐”;

第三次循环,count = 2;count < 3;循环条件返回true。执行循环体,count++,此时count = 3;然后显示输出“生日快乐”;

while循环还没结束,第四次循环,count = 3;count < 3;循环条件返回false。循环结束。

4.结束循环break

循环可以有两种方式结束:

  • 由循环条件结束
  • 由break、return结束循环

上面一小节展示了,循环自然结束。接下来,演示由break来结束循环。

break这个关键字上一章在switch里面,我们使用过,它的作用是跳出switch语句体。在循环语句中,break的作用是跳出循环体。

好我们来试试,举一个例子,显示输出10以内的数字,当当前数字加5等于10时,停止循环。

分析:

要显示输出10以内的数字,那么就得循环10次。

当当前数字加5等于10时,停止循环。

书写代码:

运行结果:

输出“0、1、2、3、4”,正确无误。

之所以能随时停下来,是因为这句代码:

是关键字break的作用。

break可以让跳出循环语句,结束循环。

5.返回结果return

循环可以有两种方式结束:

  • 由循环条件结束
  • 由break、return结束循环

上面小节展示了,循环自然结束和break。接下来,演示由return来结束循环。

准确来说,return不是结束循环用的,而是返回结果用的。而且它还只能存在于方法中。方法这个概念后面具体讲解,我们先来简单的定一个方法:

新定义的方法是sum,现在我们完成方法体:

接着,可以看到,sum方法体中就是我们上一小节的内容,只不过将它们移到了sum方法体中,然后我们来调用:

运行结果:

我们来验证一下这个结果正不正确。上一小节的结果是“0、1、2、3、4”,将它们加一起就是0+1+2+3+4=10,结果正确。

可以看到的是,return这个关键字起作用了,但是,return的作用主要不是用来结束循环的,而是返回方法结果的。这里只是返回方法结果sum的同时结束了循环,因为循环是写在方法内部的,方法都结束了,循环自然也结束了。

6.无限循环

如果我们需要显示输出“生日快乐”,让它不停的输出,永远都不停下来,直到电脑冒烟。请问该怎么做?我们看如下操作可行不可行:

循环999999999次,虽然数字很大,但是终究会停下来。唉,我们不让x累加不就好了吗?像这样:

这样的话0总是小于999999999,条件表达式总是为true。这种方法可行。但是,这样做有点low,有没有更优秀的做法。等等,前面有句话很重要“这样的话0总是小于999999999,条件表达式总是为true。”

为什么这种方法可行?

因为0总是小于999999999,条件表达式总是为true。

那是不是只要条件表达式总是为true就行?

对的。

好,我们来改造程序:

运行结果:

显示输出停不下来。

7.跳过本次循环continue

需求:

显示输出10以内的数字,但是请跳过加5等于10的数。

思路:

使用while循环,然后在循环体里面通过if语句打印那些加5不等于10。

实现:

结果:

可以看到,达到了我们的目的,但是如果我们再加多个条件的话,那if语句就要嵌套。如果我们能跳过不符合条件的情况就好了。

接下来,给大家介绍一个新的关键字:continue。作用是跳过本次循环。

改造之前的程序:

结果:

出现死循环,也就是无限循环。为什么会这样呢?

分析原因:

跳过了本次循环,下面的语句执行不到:

当前的x=5,由于下面的语句x++执行不到,所以x永远等于5,也就是x永远小于10,x+5永远等于10,永远在循环也永远在跳过本次循环,于是就造成了无限循环的局面。

解决:

在跳过本次循环之前累加x的值。

实现:

结果:

程序恢复正常。

总结:

  • while循环由循环条件和循环体构成
  • while循环条件表达式的值只能是boolean类型
  • while循环可以通过break跳出循环来结束循环
  • while循环可以通过return返回方法值来结束方法,从而结束循环
  • while循环可以通过continue跳过本次循环
  • while循环可以通过循环条件表达式总是返回true来达到无限循环

至此,Java中流程控制语句中循环语句while相关内容讲解先告一段落,更多内容请持续关注。

附:流程控制语句表

答疑

如果大家有问题或想了解更多前沿技术,请在下方留言或评论,我会为大家解答。

上一章

下一章

“全栈2019”Java第二十六章:流程控制语句中循环语句do-while

学习小组

加入同步学习小组,共同交流与进步。

  • 方式一:关注头条号gorhaf,私信“Java学习小组”。
  • 方式二:关注公众号gorhaf,回复“Java学习小组”。

全栈工程师学习计划

关注我们,加入“全栈工程师学习计划”。

版权声明

原创不易,未经允许不得转载!

文章来源:智云一二三科技

文章标题:“全栈2019”Java第二十五章:流程控制语句中循环语句while

文章地址:https://www.zhihuclub.com/179237.shtml

关于作者: 智云科技

热门文章

网站地图