循环也是程序中的重要流程结构之一,适用于需要重复一段代码直到满足特定条件为止的情况。所有流行的编程语言中都有循环语句。Java 中采用的循环语句与 C 中的循环语句相似,主要有 while、do…while、for 和 foreach。本文主要介绍 while 和 do…while。

while 语句

while 循环语句可以在一定条件下重复执行一段代码。该语句需要判断一个测试条件,如果该条件为真,则执行循环语句(循环语句可以是一条或多条),否则跳出循环。

while 循环语句的语法结构如下:

while(条件表达式) { 语句块; }

其中语句块中的代码可以是一条或者多条语句,而条件表达式是一个有效的 boolean 表达式,它决定了是否执行循环体。当条件表达式的值为 true 时,就执行大括号中的语句块。

执行完毕,再次检查表达式是否为 true,如果还为 true,则再次执行大括号中的代码,否则就跳出循环,执行 while 循环之后的代码。图 1 表示了 while 循环语句的执行流程。

图 1  while 循环语句执行流程图

例 1

使用 while 语句计算 10 的阶乘,其具体代码如下所示。

public static void main(String[] args) { int i=1; int n=1; while(i<=10) { n=n*i; i++; } System.out.println("10的阶乘结果为:"+n); }

在上述代码中,定义了两个变量 i 和 n,循环每执行一次 i 值就加 1,判断 i 的值是否小于等于 10,并利用 n=n*i 语句来实现阶乘。当 i 的值大于 10 之后,循环便不再执行并退出循环。

运行程序,执行的结果如下所示:

10 的阶乘结果为:3628800

do…while 语句

do…while 循环语句也是 Java 中运用广泛的循环语句,它由循环条件和循环体组成,但它与 while 语句略有不同。do…while 循环语句的特点是先执行循环体,然后判断循环条件是否成立。

do…while 语句的语法格式如下:

do { 语句块; }while(条件表达式);

以上语句的执行过程是,首先执行一次循环操作,然后再判断 while 后面的条件表达式是否为 true,如果循环条件满足,循环继续执行,否则退出循环。while 语句后必须以分号表示循环结束,其运行流程如图 2 所示。

图 2  do…while 循环语句的执行流程

注意:do…while 语句与 while 语句唯一的区别在于,不管表达式的结果为真还是为假,循环语句至少执行一次。因此 do…while 循环适合于至少执行一次循环体的情况。

例 2

编写一个程序,计算 10 的阶乘。使用 do…while 循环的实现代码如下所示。

public static void main(String[] args) { int number=1,result=1; do { result*=number; number++; }while(number <= 10); System.out.print("10阶乘结果是:"+result); }

程序运行后输出结果如下:

10 阶乘结果是:3628800

例 3

在一个图书系统的推荐图书列表中保存了 50 条信息,现在需要让它每行显示 10 条,分 5 行进行显示。下面使用 do…while 循环语句来实现这个效果,其具体代码如下所示。

public static void main(String[] args) { int bookIndex=1; do { System.out.print(bookIndex+"t"); if(bookIndex%10==0) { System.out.println(); } bookIndex++; }while(bookIndex<51); }

在上述代码中, 声明一个变量 bookIndex 用来保存图书的索引,该变量赋值为 1 表示从第一本开始。在 do…while 循环体内,首先输出了 bookIndex 的值,然后判断 bookIndex 是否能被 10 整除,如果可以则说明当前行已经输出 10 条,用 System.out.println() 语句输出了一个换行符。之后使 bookIndex 加 1,相当于更新当前的索引。最后在 while 表达式中判断是否超出循环的范围,即 50 条以内。

运行程序,执行的结果如下所示。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

提示

while 循环和 do…while 循环的相同处是:都是循环结构,使用 while(循环条件) 表示循环条件,使用大括号将循环操作括起来;不同处如下。

语法不同:与 while 循环相比,do…while 循环将 while 关键字和循环条件放在后面,而且前面多了 do 关键字,后面多了一个分号。

执行次序不同:while 循环先判断,再执行。do…while 循环先执行,再判断。

一开始循环条件就不满足的情况下,while 循环一次都不会执行,do…while 循环则不管什么情况下都至少执行一次。

dowhlie java_Java while和do whlie语句相关推荐

  1. python while循环语句-Python

    前言 在编程中 while 语句主要用于循环执行某段程序,常用于处理一些需要重复处理的相同任务. 其语法形式为: while expression: statement(s) expression:为 ...

  2. 实验3 分支语句和循环语句(1)

    实验三  PART 1 验证性内容 §¹ 从键盘上输入3个数,让它们代表3条线段的长度,编写一个c程序判断这3条线段组成的三角形属于什么类型 (一般三角形.等腰三角形.等边三角形或不构成三角形).程序 ...

  3. 《JavaScript高级程序设计(第3版)》教程大纲

    词条 <JavaScript高级程序设计>是2006年人民邮电出版社出版的图书,作者是(美)(Nicholas C.Zakas)扎卡斯.本书适合有一定编程经验的开发人员阅读,也可作为高校相 ...

  4. 20210130Java基本语法

    Java基本语法 编辑时间:2021/01/30 读完本节:大概花费80分钟,共7542词 1.获取用户输入 导包:import java.util.Scanner; Scanner的实例化:Scan ...

  5. 初识C语言---(2)

    字符串+转义字符+注释 "hello world.\n" 这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串. 重点:字符串的结束标志是一个 \0 的转义字符.在计算字符 ...

  6. MySQL入门之存储过程与存储函数

    ---------------------------------------------------------------------------------------------------- ...

  7. python爬虫架构师之路_一位资深 架构师大牛给予Java技术提升的学习路线建议

    一位资深 架构师大牛给予Java技术提升的学习路线建议 对于工作多年的程序员而言,日后的职业发展无非是继续专精技术.转型管理和晋升架构师三种选择. 架构师在一家公司有多重要.优秀架构师需要具备怎样的素 ...

  8. 单链表的创建、删除、反转、插入、排序操作

    单链表的创建.删除.反转.插入.排序操作 文章目录 单链表的创建.删除.反转.插入.排序操作 1.1 链表引言 1.2 单链表节点的数据结构 1.3 创建链表 1.4 打印整个链表 1.5 链表插入数 ...

  9. python学习之路1

    Hello World程序 学习语言必经之路. 1 #!/usr/bin/env python 2 3 print "hello,world" 在交互器中执行 除了把程序写在文件里 ...

最新文章

  1. Linux添加vlan不通,如何处理Linux虚拟机跨VLAN ping不通问题
  2. EBS ORACLE使用API批量取消销售订单
  3. Complex Congratulation β
  4. wangEditor Java富文本的图片上传
  5. class_create和class_device_create
  6. 并发容器(J.U.C)中的队列类
  7. fastadmin绑定edit.html,FAST-ADMIN 根据生成命令行修改页面
  8. asp类型转换函数汇总 转贴
  9. 一个关于全局变量的问题
  10. 赛尔号星球大战服务器维修,《赛尔号星球大战》6月14日停服更新公告
  11. 苹果手机怎么查看已连接的wifi密码_如何查看已连接的WiFi密码,可以这样做!...
  12. 修复计算机之后东西还在吗,硬盘分区表修复后文件还在吗
  13. IOI2009 Day2 B Mecho小熊
  14. 介绍一个直接浏览微软知识库文章的工具
  15. EBS科目值集限定词账户类型设置错误导致期末与期初余额差异
  16. 利用Retrofit, RxJava获取网络内容
  17. 将图片转化成SVG格式(亲测可行)
  18. 剑指Offe(简单)
  19. SFTP上传本地文件报错找不到文件或路径
  20. Azure 上通过 SendGrid 发送邮件

热门文章

  1. 基于异或,取反和循环移位实现一个简单的加密解密函数
  2. androidstuido_schooltest_1
  3. 160个Crackme036
  4. 1.2 Java类的定义
  5. 1.15 Java 9新增的不可变集合
  6. 1130 Infix Expression (25 分)【难度: 一般 / 知识点: 中序遍历】
  7. MySQL查询的进阶操作--条件查询
  8. java图书馆管理系统_六天写出来的基于Swing的图书管理系统你不来吐槽一下?
  9. 使用 Redis 实现一个轻量级的搜索引擎
  10. SpringBoot+Mybatis多模块(module)项目搭建教程