JAVA的循环控制与循环嵌套

循环控制和循环嵌套

 

循环控制是除了循环条件之外,控制循环是否进行的一个机制,这给处理循环问题带来了灵活性。循环体内的语句块可以是顺序执行的语句,可以是分支结构的语句,也可以是循环语句,循环中含循环,就是循环嵌套。

 

1. 循环控制

 

循环控制由break语句和continue语句实现。

 

(1)break语句

 

break语句很利落简单,语句形式:

 

break;

 

break语句除了适用于switch外,也适用于for、while以及do-while三种循环语句,其作用是结束循环,程序流程至这些语句后的第一句。通常break语句配合条件语句一起使用。

 

例8:求1+2+3 +…+ N < 1000的N的最大数。

 

分析:这是一个自然数累加计算加判断的问题,加多少项是预先不知的,或者正是所求的,所以不管是用哪个循环语句来处理,条件的地方均无法明确给出。这就需要在循环体中边加边判断,如果结果有了,中途退出循环。

 

[TestBreak.java] 
 
           class TestBreak{ 
 
               public static void main(String[] args){ 
 
                   int sum = 0, num = 1; 
 
                   while( true ){ 
 
                       sum += num; 
 
                       if( sum>1000 ) break; 
 
                       num ++ ; 
 
                   } 
 
                   System.out.println("N: " + (num-1)); 
 
               } 
 
           }
(2)Continue语句

 

continue语句形式:

 

continue;

 

continue语句,也称短路语句。它适用于for、while以及do-while语句中,其作用是忽略其后的语句,中止当前循环,流程转至循环起始处,开始下一次循环。

 

例9:阅读程序,分析程序运行结果。

 

[TestContinue.java] 
 
           class TestContinue{ 
 
               public static void main(String[] args){ 
 
                   for(int m = 1; m <= 10; m ++){ 
 
                       if( m%2 == 0 ) continue;  
 
                       System.out.print(m + "\t"); 
 
                   } 
 
               } 
 
           }
2. 循环嵌套

 

在解决复杂一些的问题时,需要在循环里继续设置循环语句,这就是循环的嵌套。外层的循环称为外循环,内层的循环称为内循环。如输出二维矩阵的问题,用循环嵌套就很容易解决。

 

例10:阅读程序,分析程序运行流程。

 

[Matrix.java] 
 
           class Matrix { 
 
               public static void main( String[] args ){ 
 
                  for( int i=1; i<=3; i++ ) { 
 
                       for ( int j=1; j<=5; j++) 
 
                             System.out.print(i*j + "\t");       
                             //内循环体 
 
                       System.out.println();                
                        //换行 
 
                  } 
 
               } 
 
           }
程序分析:i是外循环变量,当i取得一个值,循环体(斜体部分的代码)执行一次。其中有两条语句,一条是for循环语句(内循环),另一条是换行语句。当循环体执行时,即内循环变量j从初值到终值遍历一次,进行输出。i增值换下一个时,先换行。

 

本程序的输出结果是:

 

1       2       3       4       5

 

2       4       6       8       10

 

3       6       9       12      15

 

例11:输出一个三角形形式的九九乘法表。

 

1×1=1

 

2×1=2   2×2=4

 

3×1=3   3×2=6   3×3=9

 

4×1=4   4×2=8   4×3=12  4×4=16

 

5×1=5   5×2=10  5×3=15  5×4=20  5×5=25

 

6×1=6   6×2=12  6×3=18  6×4=24  6×5=30  6×6=36

 

7×1=7   7×2=14  7×3=21  7×4=28  7×5=35  7×6=42  7×7=49

 

8×1=8   8×2=16  8×3=24  8×4=32  8×5=40  8×6=48  8×7=56  8×8=64

 

9×1=9   9×2=18  9×3=27  9×4=36  9×5=45  9×6=54  9×7=63  9×8=72  9×9=81

 

分析:这与前面矩阵输出的问题有些相像,同样也是输出多行的问题。乘法表有九行,可用循环变量i来记录行数(1~9行),第1行,有1个乘法算式;第2行,有2个乘法算式;第i行便有i个乘法算式。对于确定的第i行,如何来输出这i个算式呢?这又是一个重复处理的问题,可用内循环来解决。内循环变量设为j,j的变化从1到i。

 

[MutiTable.java] 
 
 class MutiTable{ 
 
     public static void main( String[] args ){ 
 
 for( int i=1; i<=9; i++ ) { 
 
      for ( int j=1; j<=i; j++) 
 
    System.out.print( i + "*" +j+ "=" + i*j + "\t");  
 
 System.out.println(); 
 
     } 
 
 } 
 
      }
以上程序巧妙的是,循环变量i和j正巧是每个乘法算式的被乘数和乘数。

 

posted @ 2014-04-08 22:15  uncle ray  阅读(836)  评论(0编辑  收藏  举报