Java基础篇:循环语句之do-while循环
如果while循环一开始条件表达式就是假的,那么循环体就根本不被执行。然而,有时需要在开始时条件表达式即使是假的情况下,while循环至少也要执行一次。
换句话说,有时你需要在一次循环结束后再测试中止表达式,而不是在循环开始时。幸运的是,Java就提供了这样的循环:do-while循环。do-while循环总是执行它的循环体至少一次,因为它的条件表达式在循环的结尾。它的通用格式如下:
do {
// body of loop
} while (condition);
do-while循环总是先执行循环体,然后再计算条件表达式。如果表达式为真,则循环继续。否则,循环结束。对所有的Java循环都一样,条件condition必须是一个布尔表达式。
下面是一个重写的“tick”程序,用来演示do-while循环。它的输出与先前程序的输出相同。
// Demonstrate the do-while loop.
class DoWhile { public static void main(String args[]) { int n = 10; do { System.out.println("tick " + n); n--; } while(n > 0);
}
}
该程序中的循环虽然在技术上是正确的,但可以像如下这样编写更为高效:
do { System.out.println("tick " + n);
} while(--n > 0);
在本例中,表达式“-- n > 0 ”将n值的递减与测试n是否为0组合在一个表达式中。它的执行过程是这样的。首先,执行-- n 语句,将变量n递减,然后返回n的新值。这个值再与0比较,如果比0大,则循环继续。否则结束。
do-while循环在你编制菜单选择时尤为有用,因为通常都想让菜单循环体至少执行一次。下面的程序是一个实现Java选择和重复语句的很简单的帮助系统:
// Using a do-while to process a menu selection
class Menu {
public static void main(String args[])
throws java.io.IOException {
char choice;
do {
System.out.println("Help on:");
System.out.println(" 1. if");
System.out.println(" 2. switch");
System.out.println(" 3. while");
System.out.println(" 4. do-while");
System.out.println(" 5. for\n");
System.out.println("Choose one:");
choice = (char) System.in.read();
} while( choice < '1' || choice > '5');
System.out.println("\n");
switch(choice) {
case '1':
System.out.println("The if:\n");
System.out.println("if(condition) statement;");
System.out.println("else statement;");
break;
case '2':
System.out.println("The switch:\n");
System.out.println("switch(expression) {");
System.out.println(" case constant:");
System.out.println(" statement sequence");
System.out.println(" break;");
System.out.println(" // ...");
System.out.println("}");
break;
case '3':
System.out.println("The while:\n");
System.out.println("while(condition) statement;");
break;
case '4':
System.out.println("The do-while:\n");
System.out.println("do {");
System.out.println(" statement;");
System.out.println("} while (condition);");
break;
case '5':
System.out.println("The for:\n");
System.out.print("for(init; condition; iteration)");
System.out.println(" statement;");
break;
}
}
}
下面是这个程序执行的一个样本输出:
Help on:
1. if
2. switch
3. while
4. do-while
5. for
Choose one:
4
The do-while:
do {
statement;
} while (condition);
在程序中,do-while循环用来验证用户是否输入了有效的选择。如果没有,则要求用户重新输入。因为菜单至少要显示一次,do-while循环是完成此任务的合适语句。
关于此例的其他几点:注意从键盘输入字符通过调用System.in.read( )来读入。这是一个Java 的控制台输入函数。它从标准的输入读取字符(返回整数,因此将返回值choice定义为字符型)。默认地,标准输入是按行进入缓冲区的,因此在你输入的任何字符被送到你的程序以前,必须按回车键。
Java的终端输入功能相当有限且不好使用。进一步说,大多数现实的Java程序和applets(小应用程序)都具有图形界面并且是基于窗口的。因此,这本书使用终端的输入并不多。
然而,它在本例中是有用的。另外一点:因为使用System.in.read ( ),程序必须指定throws java.io.IOException子句。这行代码对于处理输入错误是必要的。
Java基础篇:循环语句之do-while循环相关推荐
- Java基础篇:如何使用 break 退出循环
在Java中,break语句有3种作用.第一,你已经看到,在switch语句中,它被用来终止 一个语句序列.第二,它能被用来退出一个循环.第三,它能作为一种"先进"的goto 语句 ...
- Java基础篇3——流程控制
Java基础篇3--流程控制 1.顺序结构 正常代码的流程即是顺序流程 2.分支结构 2.1.if-else分支 if(条件表达式) {语句块1; } if(条件表达式) {语句块1; } else ...
- 菜鸟学习笔记:Java基础篇2(变量、运算符、流程控制语句、方法)
菜鸟学习笔记:Java基础篇2 变量 基本概念 变量作用域 final关键字 运算符 算术运算符 比较运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 运算符优先级 Java三种流程控制语句 顺序 ...
- java基础篇---第一天
今日开始在心中正式开始在培训班开始培训.一下是在培训的过程中发现自己在自学过的过程中发现的问题.这篇是java基础篇. 第一天 : 1)配置java环境变量 1.在系统变量中新建JAVA_HOME:j ...
- 《Java 后端面试经》Java 基础篇
<Java 后端面试经>专栏文章索引: <Java 后端面试经>Java 基础篇 <Java 后端面试经>Java EE 篇 <Java 后端面试经>数 ...
- Java基础篇 学习笔记
List item Java基础篇 学习笔记 java基础篇 第1章 计算机.程序和java概述 学习笔记 1.1什么是计算机 简单来说:计算机就是 ' 存储 ' 和 ' 处理 ' 数据的电子设备. ...
- Java基础篇--Java 数组
Java基础篇--Java 数组 Java 数组 声明数组变量 创建数组 处理数组 For-Each 循环 数组作为函数的参数 数组作为函数的返回值 多维数组 多维数组的动态初始化(以二维数组为例) ...
- 你所需要的java基础篇深入解析大汇总
java基础篇深入解析大总结 java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规则 java基础(三) 加强型for循环与Iterator java基础(四) java运算顺序 ...
- 你所需要的java基础篇和提升篇大总结
好好学java 致力于java知识分享 关注 精彩内容 你所需要的java全套视频教程 你所需要的java电子图书 你所需要的大数据视频教程 你所需要的java练习项目 如 / 诗 近半个月,每天一篇 ...
- Java基础篇1——变量与数据类型
Java基础篇1--变量与数据类型 1.标识符命名规则 标识符以由大小写字母.数字.下划线(_)和美元符号($)组成,但是不能以数字开头. 大小写敏感 不能与Java语言的关键字重名 不能和Java类 ...
最新文章
- iview构建基本html页面,使用vue-cli创造基于vue.js的iview工程
- 计算机开始按钮作用,Win8.1的12个变化:开始按钮回归功能不再
- Android将允许纯C/C++开发应用
- 鸟哥的Linux私房菜(基础篇)- 第二十四章、 X Window 配置介绍
- python scapy sniff timeout_为什么我尝试使用scapy.sniff()函数获取此奇怪的输出,以尝试监听打开的网站的流量?...
- 戴尔电脑开机黑屏怎么办_笔记本电脑开机黑屏怎么办
- libcurl Get json 数据 接收全部的数据
- 读取pdf文件信息(pdfinfo)
- 了解IHttpModule接口事件执行顺便 获取Session
- 微信小程序的本地存储
- 台大Machine Learning 2017Fall HW0字数统计和图片淡化 解答
- spss进行多元线性回归并分析表格
- 深度学习环境搭建之三_离线安装无线网卡、DKMS
- Re-ranking Person Re-identification with k-reciprocal Encoding
- markdown语法中的空格_MarkDown语法
- 思科三层交换机开启ipv6路由功能_网络工程实战之三层交换机配置IPv6 DNS 示例...
- 计算机助理职称考试成绩查询,初级成绩可以查询了!
- split()函数的使用方法
- 程序设计、数据结构、编译相关图灵奖得主简介之二
- 前端-超链接,相对路径