悠悠女儿香 发表于 2009-2-17 10:58:17

Java中的流程控制

1.break和continue
    break用于强行推出循环,不执行循环中剩余的语句。continue用于停止执行当前的迭代,然后退回循环起始处,开始下一次迭代。看下面的代码:
    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.println(i);
         }
            int i=0;
            //An \"infinite loop\":
            while(true){
            i;
            int j=i*27;//40*27=1080,50*27=1350
            if(j==1269)break;//out of loop
            if(i!=0)continue;//Top of loop
            System.out.println(i);
            }
      }
    }

    结果:
    0
    9
    18
    27
    36
    45
    54
    63
    72
    10
    20
    30
    40
    2.标签在for循环中的使用
    看下面的代码:
    public class LabeledFor {
      public static void main(String[] args) {
         int i = 0;
         outer: for (; true;) {// infinite loop
               inner: for (; i < 10; i) {
                  System.out.println(\"i=\"   i);
                  if (i == 2) {
                      System.out.println(\"continue\");
                      continue;
                  }
                  if (i == 3) {
                      System.out.println(\"break\");
                      i;// Otherwise i never gets incremented.
                      break;
                  }
                  if (i == 7) {
                      System.out.println(\"continue outer\");
                      i;// Otherwise i never gets incremented.
                      continue outer;
                  }
                  if (i == 8) {
                      System.out.println(\"break outer\");
                      break outer;
                  }
                  for (int k = 0; k < 5; k) {
                      if (k == 3) {
                         System.out.println(\"continue inner\");
                         continue inner;
   
                  
   
集整理   发布日期:2007-10-30

                      }
                  }
               }
         }
      }
    }

    结果:
    i=0
    continue inner
    i=1
    continue inner
    i=2
    continue
    i=3
    break
    i=4
    continue inner
    i=5
    continue inner
    i=6
    continue inner
    i=7
    continue outer
    i=8
    break outer
    注意,break会中断for循环,而且在抵达for循环的末尾之前,递增表达式不会执行。由于break跳过了递增表达式,所以在i==3的情况下直接对i执行递增运算。在i==7的情况下,continue outer语句会跳到循环顶部,而且也会跳过递增,所以这里也对i直接递增。
    如果没有break outer语句,就没有办法从内部循环里挑出外部循环。这是由于break本身只能中断最内层的循环(continue也是如此)。
    当然,如果想在中断循环的同时退出方法,简单地用一个return即可。
    3.标签在while循环中的使用
    看下面的代码:
    public class LabeledWhile {
      public static void main(String[] args) {
         int i = 0;
         outer: while (true) {
               System.out.println(\"Outer while loop\");
               while (true) {
                  i;
                  System.out.println(\"i=\"   i);
                  if (i == 1) {
                      System.out.println(\"continue\");
                      continue;
                  }
                  if (i == 3) {
                      System.out.println(\"continue outer\");
                      continue outer;
                  }
                  if (i == 5) {
                      System.out.println(\"break\");
                      break;
                  }
                  if (i == 7) {
                      System.out.println(\"break outer\");
                      break outer;
                  }
               }
         }
      }
    }

    结果:
    Outer while loop
    i=1
    continue
    i=2
    i=3
    continue outer
    Outer while loop
    i=4
    i=5
    break
    Outer while loop
    i=6
    i=7
    break outer
    注:Java中需要使用标签的唯一理由就是因为有循环嵌套,而且你想从多层嵌套中break或continue。
    4.switch
    switch语句要求使用一个选择因子,并且必须是int或char那样的整数值。例如,假如一个字符串或浮点数作为选择因子,那么它们在switch语句里不会工作。看下面的代码:
    public class VowelsAndConsonants {
      public static void main(String[] args) {
         for (int i = 0; i < 100; i) {
               char c = (char) (Math.random() * 26   ’a’);
               System.out.println(c   \":\");
               switch (c) {

上一页    
                  

               case ’a’:
               case ’e’:
               case ’i’:
               case ’o’:
               case ’u’:
                  System.out.println(\"vowel\");
                  break;
               case ’y’:
               case ’w’:
                  System.out.println(\"Sometimes a vowel\");
                  break;
               default:
                  System.out.println(\"consonant\");
               }
         }
      }
    }

    ①Math.random()范围为[0,1)
    ②char c=(char)(Math.random()*26 ’a’);
    Math.random()会产生一个double值,所以26会转换成double类型,以便执行乘法运算。这个运算也会产生一个double值。这意味着为了执行加法,必须将’a’转换成double。最后使用显示的类型转换将double结果转回char。
    ③将一个float或double值转型成整数后,总是将小数部分“砍掉”。    上一页
页: [1]
查看完整版本: Java中的流程控制