值。可据此改写上面的 test()方法,使其利用这些特点:
84
…………………………………………………………Page 86……………………………………………………………
static int test2(int testval) {
if(testval 》 target)
return …1;
if(testval 《 target)
return +1;
return 0; // match
}
不必加上else,因为方法在遇到 return 后便不再继续。
3。2。3 反复
while,do…while 和 for 控制着循环,有时将其划分为“反复语句”。除非用于控制反复的布尔表达式得到
“假”的结果,否则语句会重复执行下去。while 循环的格式如下:
while(布尔表达式)
语句
在循环刚开始时,会计算一次“布尔表达式”的值。而对于后来每一次额外的循环,都会在开始前重新计算
一次。
下面这个简单的例子可产生随机数,直到符合特定的条件为止:
//: WhileTest。java
// Demonstrates the while loop
public class WhileTest {
public static void main(String'' args) {
double r = 0;
while(r 《 0。99d) {
r = Math。random();
System。out。println(r);
}
}
} ///:~
它用到了Math 库里的 static (静态)方法random() 。该方法的作用是产生 0 和 1 之间(包括 0,但不包括
1)的一个double值。while 的条件表达式意思是说:“一直循环下去,直到数字等于或大于0。99”。由于
它的随机性,每运行一次这个程序,都会获得大小不同的数字列表。
3。2。4 dowhile
do…while 的格式如下:
do
语句
while(布尔表达式)
while 和 do…while 唯一的区别就是do…while 肯定会至少执行一次;也就是说,至少会将其中的语句“过一
遍”——即便表达式第一次便计算为false。而在while 循环结构中,若条件第一次就为false,那么其中的
语句根本不会执行。在实际应用中,while 比do…while 更常用一些。
85
…………………………………………………………Page 87……………………………………………………………
3。2。5 for
for 循环在第一次反复之前要进行初始化。随后,它会进行条件测试,而且在每一次反复的时候,进行某种
形式的“步进”(Stepping )。for 循环的形式如下:
for(初始表达式 ; 布尔表达式 ; 步进)
语句
无论初始表达式,布尔表达式,还是步进,都可以置空。每次反复前,都要测试一下布尔表达式。若获得的
结果是 false,就会继续执行紧跟在 for 语句后面的那行代码。在每次循环的末尾,会计算一次步进。
for 循环通常用于执行“计数”任务:
//: ListCharacters。java
// Demonstrates 〃for〃 loop by listing
// all the ASCII characters。
public class ListCharacters {
public static void main(String'' args) {
for( char c = 0; c 《 128; c++)
if (c != 26 ) // ANSI Clear screen
System。out。println(
〃value: 〃 + (int)c +
〃 character: 〃 + c);
}
} ///:~
注意变量c 是在需要用到它的时候定义的——在 for 循环的控制表达式内部,而非在由起始花括号标记的代
码块的最开头。c 的作用域是由for 控制的表达式。
以于象C 这样传统的程序化语言,要求所有变量都在一个块的开头定义。所以在编译器创建一个块的时候,
它可以为那些变量分配空间。而在 Java 和C++中,则可在整个块的范围内分散变量声明,在真正需要的地方
才加以定义。这样便可形成更自然的编码风格,也更易理解。
可在for 语句里定义多个变量,但它们必须具有同样的类型:
for(int i = 0; j = 1;
i 《 10 && j != 11;
i++; j++)
/* body of for loop */;
其中,for 语句内的 int定义同时覆盖了 i 和 j。只有 for 循环才具备在控制表达式里定义变量的能力。对于
其他任何条件或循环语句,都不可采用这种方法。
1。 逗号运算符
早在第 1 章,我们已提到了逗号运算符——注意不是逗号分隔符;后者用于分隔函数的不同自变量。Java 里
唯一用到逗号运算符的地方就是for 循环的控制表达式。在控制表达式的初始化和步进控制部分,我们可使
用一系列由逗号分隔的语句。而且那些语句均会独立执行。前面的例子已运用了这种能力,下面则是另一个
例子:
//: maOperator。java
public class maOperator {
public static void main(String'' args) {
for(int i = 1; j = i + 10; i 《 5;
i++; j = i * 2) {
86
…………………………………………………………Page 88……………………………………………………………
System。out。println(〃i= 〃 + i + 〃 j= 〃 + j);
}
}
} ///:~
输出如下:
i= 1 j= 11
i= 2 j= 4
i= 3 j= 6
i= 4 j= 8
大家可以看到,无论在初始化还是在步进部分,语句都是顺序执行的。此外,尽管初始化部分可设置任意数
量的定义,但都属于同一类型。
3。2。6 中断和继续
在任何循环语句的主体部分,亦可用break 和 continue 控制循环的流程。其中,break 用于强行退出循环,
不执行循环中剩余的语句。而 continue 则停止执行当前的反复,然后退回循环起始和,开始新的反复。
下面这个程序向大家展示了break 和 continue 在 for 和 while 循环中的例子:
//: BreakAndContinue。java
// Demonstrates break and continue keywords
public class BreakAndContinue {
public static void main(String'' args) {
for(int i = 0; i 《 100; i++) {
if(i == 74) break; // Out of for loop
if(i % 9 != 0) continue; // Next iteration
System。out。print ln(i);
}
int i = 0;
// An 〃infinite loop〃:
while(true) {
i++;
int j = i * 27;
if(j == 1269) break; // Out of loop
if(i % 10 != 0) continue; // Top of loop
System。out。println(i);
}
}
} ///:~
在这个 for 循环中,i 的值永远不会到达 100。因为一旦 i到达74,break 语句就会中断循环。通常,只有在
不知道中断条件何时满足时,才需象这样使用 break。只要 i 不能被 9 整除,continue 语句会使程序流程返
回循环的最开头执行(所以使i 值递增)。如果能够整除,则将值显示出来。
第二部分向大家揭示了一个“无限循环”的情况。然而,循环内部有一个 break 语句,可中止循环。除此以
外,大家还会看到 continue 移回循环顶部,同时不完成剩余的内容(所以只有在 i 值能被 9 整除时才打印出
值)。输出结果如下:
0
9
18
87
…………………………………………………………Page 89……………………………………………………………
小说推荐
- 软件工程实践者的思想(PDF格式)
- -Page 1-大 道 至 简—软件工程实践者的思想周爱民(Aimingoo 著-Page 2-序2004 年 11 月初爱民(Aimingoo)第一次把他的书稿给我,我翻看了一下,第一反应讲的是感想。这不错,在技
- 其他
- 最新章:第26章
- 深入浅出MFC第2版(PDF格式)
- -Page 1-Page 2-山高月小山高月小 水落石出水落石出山高月小山高月小 水落石出水落石出-Page 3-深入淺出MFC(第版 使用Visual C 5.0 MFC 4.2)Dissecting MFC(Second Edition Using Visual C 5.0 MFC 4.2)侯俊
- 其他
- 最新章:第309章
- VB2008从入门到精通(PDF格式英文版)
- -Page 1(R)The eXperT’s Voice inBeginningVB 2008From Novice to ProfessionalChristian Gross-Page 2-Page 3-Beginning VB 2008From Novice to Professional■C
- 其他
- 最新章:第214章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 其他
- 最新章:第4章
- JMS简明教程(PDF格式)
- -Page 1-JMS1.1规范中文版卫建军2007‐11‐22-Page 2
- 其他
- 最新章:第28章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 其他
- 最新章:第143章
- 神祗之眼 (正式版)第7卷(全文完)作者:百里芜虚
- 第五十一章离12月25日的圣诞节还有两天,纽约已经换上了节日的盛装,几天前的一场大雪令整个城市一片银白。人们笑逐颜开,都纷纷开始为节日做准备,商家为了在节日打开销路纷纷推出各种优惠促销手段,纽约的大街小巷全都这样热闹。依沙那被老婆打发出来买过节要用的杂货,而女儿则和凯妮一起到百货商场去买衣服去了。对
- 魔法玄幻
- 最新章:第23章
- SQL语言艺术(PDF格式)
- -Page 1-SQLSSQQLL语言艺术内容介绍本书分为12章,每一章包含许多原则或准则,并通过举例的方式对原则进行解释说明。这些例子大多来自于实际案例,对九种SQL经典查询场景以及其性能影响讨论,非常便于实践,为你数据库应用维护人员阅读。资深 SQL 专家 Stéphane Faroult倾力打
- 其他
- 最新章:第27章
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 其他
- 最新章:第31章