Day11-38.Iteration
来源:互联网 发布:c语言是c 的基础吗 编辑:程序博客网 时间:2024/05/21 02:20
迭代
while、do-while和for用来控制循环,有时将它们划分为迭代语句(iteration statement)。
语句会重复执行,直到起控制作用的布尔表达式(Booleanexpression)得到“假”的结果为止。
while循环的格式如下:
while(Boolean-expression)
statement
在循环刚开始时,会计算一次布尔表达式的值;而在语句的下一次迭代开始前会再计算一次。
下面这个简单的例子可产生随机数,直到符合特定的条件为止:
//: control/WhileTest.java// Demonstrates the while loop.public class WhileTest { static boolean condition() { boolean result = Math.random() < 0.99; System.out.print(result + ", "); return result; } public static void main(String[] args) { while(condition()) System.out.println("Inside 'while'"); System.out.println("Exited 'while'"); }} /* (Execute to see output) *///:~
condition()方法用到了Math库里的静态static方法random(),该方法的作用是产生0和1之间(包括0但不包括1)的一个double值。
result的值是通过比较操作符<而得到它,这个操作符将产生boolean类型的结果。
在打印boolean类型的值时,将自动地得到适合的字符串true或false。
while的条件表达式意思是说:“只要condition()返回true,就重复执行循环体中的语句”。
do-while
do-while的格式如下:
do
statement
while(boolean-expression);
while和do-while唯一的区别就是do-while中的语句至少会执行一次,即使表达式第一次就被计算为false。
而在while循环结构中,如果条件第一次就为false,那么其中的语句根本就不会执行。
在实际应用中,while比do-while更常用一些。
for
for循环可能是最经常使用的迭代形式,这种在第一次迭代之前要进行初始化。
随后,它会进行条件测试,而且在每一次迭代结束时,进行某种形式的“步进”。
for循环的格式如下:
for(initialization;boolean-expression;step)
statement
初始化(initialization)表达式、布尔表达式(Boolean-expression)或者步进(step)运算,
都可以为空。
每次迭代前会测试布尔表达式。
若获得的结果是false,就会执行for语句后面的代码行。
每次循环结束,会执行一次步进。
for循环常用于执行“计数”任务:
//: control/ListCharacters.java// Demonstrates "for" loop by listing// all the lowercase ASCII letters.public class ListCharacters { public static void main(String[] args) { for(char c = 0; c < 128; c++) if(Character.isLowerCase(c)) System.out.println("value: " + (int)c + " character: " + c); }} /* Output:value: 97 character: avalue: 98 character: bvalue: 99 character: cvalue: 100 character: dvalue: 101 character: evalue: 102 character: fvalue: 103 character: gvalue: 104 character: hvalue: 105 character: ivalue: 106 character: j...*///:~
注意,变量c是在程序用到它的地方被定义的,也就是在for循环的控制表达式里,
而不是在main()开始的地方定义的,c的作用域就是for控制的表达式的范围内。
这个程序也使用了java.lang.Character包装器类,这个类不但能把char基本类型的值包装进对象,还提供了一些别的有用的方法。
这里用到了static isLowerCase()方法来检查问题中的字符是否为小写字母。
对于像C语言那样的传统的过程型语言,要求所有变量都在一个块的开头定义,以便编译器在创建这个块的时候,可以为那些变量分配空间。
而在Java和C++中,则可在整个块的范围内分散变量声明,在真正需要的地方才加以定义。
这样便可形成更自然的编程风格,也更易理解。
The comma operator
逗号操作符
本章前面已经提到了逗号操作符(注意不是逗号分隔符,逗号用作分割符时用来分割函数的不同参数),
Java里唯一用到逗号操作符的地方就是for循环的控制表达式。
在控制表达式的初始化和步进控制部分,可以使用一系列由逗号分割的语句;而且那些语句均会独立执行。
通过使用逗号操作符,可以在for语句内定义多个变量,但是它们必须具有相同的类型。
//: control/CommaOperator.javapublic class CommaOperator { public static void main(String[] args) { for(int i = 1, j = i + 10; i < 5; i++, j = i * 2) { System.out.println("i = " + i + " j = " + j); } }} /* Output:i = 1 j = 11i = 2 j = 4i = 3 j = 6i = 4 j = 8*///:~
for语句中的int定义涵盖了i和j,在初始化部分实际上可以拥有任意数量的具有相同类型的变量定义。
在一个控制表达式中,定义多个变量的这种能力只限于for循环适用,在其他任何选择或迭代语句中都不能使用这种方式。
可以看到,无论在初始化还是在步进部分,语句都是顺序执行的。
此外,初始化部分可以有任意数量的同一类型的定义。
- Day11-38.Iteration
- day11
- DAY11
- day11
- day11
- day11
- day11
- Day11
- day11
- day11
- day11
- day11
- day11
- Day11
- day11
- Day11
- day11
- Day11
- hdu 6181 Two Paths -最短路条数+次短路
- HashMap和HashSet使用--统计字符出现的次数
- 恩JSP的学习
- 一个可供参考的Java高并发异步应用案例--转
- 通俗理解决策树中的熵&条件熵&信息增益
- Day11-38.Iteration
- Java Socket 实现HTTP与HTTPS协议发送POST/GET请求
- iOS 发布程序~笔记
- R 文本挖掘 Part2--几个聚类分类算法以及应用
- B: 字符串的展开
- Joint Cascade Face Detection and Alignment流程
- Android 轮番图
- VS2013之c++调用Lua5.3.x方法
- Day12-39.Foreach syntax