随笔 - 26  文章 - 2  trackbacks - 0
<2011年10月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

Java 的循环语句有for,while 和 do-while 。这些语句创造了我们通常所称的循环(loops)。你可能知道,一个循环重复执行同一套指令直到一个结束条件出现。你将看到,Java 有

Java 的循环语句有for,while 和 do-while 。这些语句创造了我们通常所称的循环(loops)。你可能知道,一个循环重复执行同一套指令直到一个结束条件出现。你将看到,Java 有适合任何编程所需要的循环结构。

 

5.2.1 while 语句

while 语句是Java 最基本的循环语句。当它的控制表达式是真时,while 语句重复执行一个语句或语句块。它的通用格式如下:

 

while(condition) {

// body of loop

}

 

 

条件condition 可以是任何布尔表达式。只要条件表达式为真,循环体就被执行。当条件condition 为假时,程序控制就传递到循环后面紧跟的语句行。如果只有单个语句需要重复,大括号是不必要的。

 

下面的while 循环从10开始进行减计数,打印出10行“tick”。

 

// Demonstrate the while loop.

class While {

public static void main(String args[]) {

int n = 10;

 

 

while(n > 0) {

System.out.println("tick " + n);

n--;

 

 

}

}

}

 

 

当你运行这个程序,它将“tick”10次:

 

tick 10

tick 9

tick 8

tick 7

tick 6

tick 5

tick 4

tick 3

tick 2

tick 1

 

 

因为while 语句在循环一开始就计算条件表达式,若开始时条件为假,则循环体一次也不会执行。例如,下面的程序中,对println( ) 的调用从未被执行过:

 

int a = 10, b = 20;

 

while(a > b)

System.out.println("This will not be displayed");

 

 

while 循环(或Java 的其他任何循环)的循环体可以为空。这是因为一个空语句(null statement) (仅由一个分号组成的语句)在Java 的语法上是合法的。例如,下面的程序:

 

// The target of a loop can be empty.

class NoBody {

public static void main(String args[]) {

 

 

int i, j;

i = 100;

j = 200;

 

 

// find midpoint between i and j

while(++i < --j) ; // no body in this loop

 

 

System.out.println("Midpoint is " + i);

}

}

 

 

该程序找出变量i和变量j的中间点。它产生的输出如下:

 

Midpoint is 150

 

该程序中的while 循环是这样执行的。值i自增,而值j自减,然后比较这两个值。如果新的值i仍比新的值j小,则进行循环。如果i等于或大于j,则循环停止。在退出循环前,i 将保存原始i和j的中间值(当然,这个程序只有在开始时i比j小的情况下才执行)。正如你看到的,这里不需要循环体。所有的行为都出现在条件表达式自身内部。在专业化的Java 代码中,一些可以由控制表达式本身处理的短循环通常都没有循环体。

 

5.2.2 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 ");

System.out.println("Choose one:");

choice = (char) System.in.read();

 

 

} while( choice < '1' || choice > '5');

 

System.out.println(" ");

 

switch(choice) {

 

case '1':

System.out.println("The if: ");

System.out.println("if(condition) statement;");

System.out.println("else statement;");

 

 

break;

 

case '2':

System.out.println("The switch: ");

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: ");

System.out.println("while(condition) statement;");

break;

 

 

case '4':

System.out.println("The do-while: ");

System.out.println("do {");

 

 

System.out.println(" statement;");

System.out.println("} while (condition);");

break;

 

case '5':

System.out.println("The for: ");

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 的控制台输入函数。尽管Java 的终端 I/O (输入/输出)方法将在第12章中详细讨论,在这里使用System.in.read ( ) 来读入用户的选择。它从标准的输入读取字符(返回整数,因此将返回值choice 定义为字符型)。默认地,标准输入是按行进入缓冲区的,因此在你输入的任何字符被送到你的程序以前,必须按回车键。

 

Java 的终端输入功能相当有限且不好使用。进一步说,大多数现实的Java 程序和applets (小应用程序)都具有图形界面并且是基于窗口的。因此,这本书使用终端的输入并不多。然而,它在本例中是有用的。另外一点:因为使用System.in.read ( ) ,程序必须指定throws java.io.IOException 子句。这行代码对于处理输入错误是必要的。这是Java 的异常处理的一部分,将在第10章讨论。

 

5.2.3 for 循环

在第2章曾使用过一个for循环的简单格式。你将看到,for循环是一个功能强大且形式灵活的结构。下面是for 循环的通用格式:

 

for(initialization; condition; iteration) {

// body

}

 

 

如只有一条语句需要重复,大括号就没有必要。

 

 

for循环的执行过程如下。第一步,当循环启动时,先执行其初始化部分。通常,这是设置循环控制变量值的一个表达式,作为控制循环的计数器。重要的是你要理解初始化表达式仅被执行一次。下一步,计算条件condition 的值。条件condition 必须是布尔表达式。它通常将循环控制变量与目标值相比较。如果这个表达式为真,则执行循环体;如果为假,则循环终止。再下一步执行循环体的反复部分。这部分通常是增加或减少循环控制变量的一个表达式。接下来重复循环,首先计算条件表达式的值,然后执行循环体,接着执行反复表达式。这个过程不断重复直到控制表达式变为假。

下面是使用for 循环的“tick”程序:

 

// Demonstrate the for loop.

class ForTick {

public static void main(String args[]) {

int n;

 

 

for(n=10; n>0; n--)

System.out.println("tick " + n);

}

}

 

 

for 循环中声明循环控制变量

 

控制for循环的变量经常只是用于该循环,而不用在程序的其他地方。在这种情况下,可以在循环的初始化部分中声明变量。例如,下面重写了前面的程序,使变量 n 在for循环中被声明为整型:

 

// Declare a loop control variable inside the for.

class ForTick {

public static void main(String args[]) {

 

 

// here, n is declared inside of the for loop

for(int n=10; n>0; n--)

System.out.printl

 

 

 

本篇文章来源于 黑基网-中国最大的网络安全站点 原文链接:file:///C:/Documents%20and%20Settings/Administrator/桌面/网页学习资料/java%20循环语句-知识-黑基网.htm

posted on 2011-10-09 21:37 Java_liyadong 阅读(1046) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: