zoukankan      html  css  js  c++  java
  • while,dowhile和for循环控制语句 程序员

        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 do-while

    do-while的格式如下:

    do

    语句

    while(布尔表达式)

    while和do-while唯一的区别就是do-while肯定会至少执行一次;也就是说,至少会将其中的语句“过一遍”——即便表达式第一次便计算为false。而在while循环结构中,若条件第一次就为false,那么其中的语句根本不会执行。在实际应用中,while比do-while更常用一些。

    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循环的控制表达式。在控制表达式的初始化和步进控制部分,我们可使用一系列由逗号分隔的语句。而且那些语句均会独立执行。前面的例子已运用了这种能力,下面则是另一个例子:

    //: CommaOperator.java

    public 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);

        }

      }

    } ///:~

    输出如下:

    i= 1 j= 11

    i= 2 j= 4

    i= 3 j= 6

    i= 4 j= 8

    大家可以看到,无论在初始化还是在步进部分,语句都是顺序执行的。此外,尽管初始化部分可设置任意数量的定义,但都属于同一类型。

  • 相关阅读:
    codeforces 455B A Lot of Games(博弈,字典树)
    HDU 4825 Xor Sum(二进制的字典树,数组模拟)
    hdu 1800 Flying to the Mars(简单模拟,string,字符串)
    codeforces 425A Sereja and Swaps(模拟,vector,枚举区间)
    codeforces 425B Sereja and Table(状态压缩,也可以数组模拟)
    HDU 4148 Length of S(n)(字符串)
    codeforces 439D Devu and Partitioning of the Array(有深度的模拟)
    浅谈sass
    京东楼层案例思维逻辑分析
    浅谈localStorage和sessionStorage
  • 原文地址:https://www.cnblogs.com/sallon/p/2520406.html
Copyright © 2011-2022 走看看