Java基础篇:循环语句之do-while循环

Java的do-while循环确保至少执行一次循环体,即使条件在开始时为假。循环体后检查条件,如果为真则继续执行。在菜单选择和需要重复执行的场景中特别有用。示例程序展示了如何使用do-while循环处理用户输入,直到输入有效。由于System.in.read()的使用,程序需要处理可能的IOException。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果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子句。这行代码对于处理输入错误是必要的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值