Java入门6:循环结构程序

分支结构程序使得程序在执行时,可以根据条件在执行的成立与否来有选择性的执行某段代码,或者不执行某段代码,使得程序能够实现更加灵活的功能。

循环结构的程序允许程序在执行时,根据条件的是否成立情况,使得某段代码能够被连续执行多次。

本节内容的学习目标:

  • 使用while循环编写代码
  • 使用for循环编写代码
  • 编写嵌套循环
  • 说出何时使用for循环,何时使用while循环
  • 使用do循环编写代码
  • 说出在while、for或do循环结构内部如何使用continue关键字来控制循环

一、初说循环

【例1.1】看看下面程序的执行结果。

01      public  class  TestLoop {
02             public  static  void  main( String [ ] args ) {
03                      int   count = 0;
04                      while ( count < 5 ) {
05                              System.out.println( "Hello  world ." ) ;
06                              count++;
07                      }
08             }
09      }

该程序的执行结果显示:

Hello  world.
Hello  world.
Hello  world.
Hello  world.
Hello  world. 

 循环结构能够:

  • 在被检查的条件存在时一直执行某些操作
  • 改变被检查项的值
     

 有下面部分组成:

  • initialize —— 循环初始化
  • boolean_expression —— 条件表达式
  • code_block —— 循环体,即被连续多次执行的语句(可以是多条语句)
  • update( or increment ) —— 能够对条件表达式的值产生变化的更新操作 

while语句结构:

initialization
        while( boolean_expression )  {
               code_block;
               update;//optional
        }
 

【例1.2】显示100以内所有正奇数。

01      public  class   Odd {
02             public  static  void  main( String [ ] args ) {
03                      int   count = 1;
04                      while ( count < 100 ) {
05                              System.out.println( count  ) ;
06                              count = count +2;
07                      }
08             }
09      }

【例1.3】计算1 - 1/3 + 1/5 - 1/7 + …  - 1/99的值。

01      public  class  Sum {
02             public  static  void  main( String [ ] args ) {
03                      double   sum = 0 , count  = 1 ;
04                      int  flag = 1;
05                      while ( count <= 99 ) {
06                              sum = sum + flag * 1/count ;
07                              count = count +2;
08                              flag = - flag ;
09                      }
10                      System.out.println( "1 - 1/3 + 1/5 - 1/7 + …  - 1/99 = " + sum );
11             }
12      }

二、练习1

 求“水仙花数”。水仙花数是一个三位数,它的各位数字的立方和等于该数本身。如153 = 13+53 +33,所以153是水仙花数。

 三、嵌套循环

 问题:要打印一个如下所示的矩形:

@@@@@@@@@@
        @@@@@@@@@@
        @@@@@@@@@@ 

 

  • 上面程序中13~17行为内部循环,10~20行为外部循环,内部循环是外部循环循环体的一部分
  • 内部循环控制行的显示,外部循环控制显示的行数
  • 内部循环执行的频率要快于外部循环 

四、练习2

  • 使用while循环和前面讲到的switch语句来显示一周内的星期几。给它取名为DaysOfWeek3.java
  • 编写一个名为WhileTimes的程序,这个程序要使用while循环显示前10个数的倍数表
    1 2 3 4 5 6 7 8 9 10
    2 4 6 8 10 12……
    ……
  • 显示如下图案
    #
    ###
    #####
    #######
    #########

五、for循环

1、语法说明

for ( initialize [ , initialize ] ; boolean_expression ; update [ , update ] ) {
               code_block;
        } 

for语句的执行流程见下图

 

 该语句结构中的initialize、boolean_expression、code_block、update的含义与while语句中的含义相同。

2、for语句与while语句的应用场合

我们完全可以使用whiler语句完成for语句的功能。

一般情况下,for用于能够预先确定循环次数的场合,而while用于循环次数预先不容易确定的场合。

3、示例

例1.1程序功能实现在屏幕上显示五行“Hello world.”,用for循环实现程序更简洁。

01      public  class  TestFor {
02             public  static  void  main( String [ ] args ) {
03                      for ( int i = 0 ; i < 5 ; i++  ) {
04                              System.out.println( "Hello world" );
05                      }
06             }
07      }

例1.2程序实现显示100以内正奇数,其数据分别是1、3、5、…、99,循环的次数也是相对固定的,for语句实现的程序如下: 

01      public  class  TestFor2 {
02             public  static  void  main( String [ ] args ) {
03                      for ( int i = 1 ; i < 100 ; i+=2  ) {
04                              System.out.println( i );
05                      }
06             }
07      }

 【例1.4】需要从0开始计数,步长为2,同时要从100开始向下计数,步长为3,而且当第一个数大于第二个数时停止计数,使用for循环完成以下功能 

01      public  class  TwoNumbersLoop {
02             public  static  void  main( String [ ] args ) {
03                      int  i , j ;
04                      for ( i = 0 , j=100 ; i <=j  ; i+=2 , j-=3  ) {
05                              System.out.println( j+" is not smaller than "+i+" yet" ) ;
06                      }
07             }
08      }

 4、练习——重新实现练习2的各题目

六、do-while循环

1、语法格式

initialize    //可选,视程序而定
        do  {
               update  //可选以及位置视程序而定
               code_block;
        } while ( boolean_expression );  //最后的分号是必须的

do-while循环的循环体至少要执行依次(第1次循环时),for和while循环的循环体有可能一次都不执行,这是do-while与for和while的重要区别之一;另外do-while的条件判断发生在循环体执行之后,while和for的条件判断发生在循环体执行之前。

2、用do-while重新实现例1.1 。

01      public  class  TestDoWhile {
02             public  static  void  main( String [ ] args ) {
03                      int   count = 0;
04                      do {
05                              System.out.println( "Hello  world ." ) ;
06                              count++;
07                      }while ( count < 5 ) ;
08             }
09      }

3、练习

编写一个名为DoTwoRandom的程序,使他能够生成并打印范围在0到5之间的两个随机数,并保证他们是不一样的。将编写的这个程序多运行几次,以保证他能够正确运行
 

七、使用continue和break

break语句除了允许用在switch语句中用来结束switch的执行外,也可用在循环语句的循环体中,其作用是结束所在循环语句的执行。

continue语句只能用在循环语句的循环体中,其作用是结束本次循环体(注意不是结束循环语句的执行)的执行,执行下一次循环。

思考:考虑这样一个for语句,他从1循环到50,如果循环到9的倍数,则给9的倍数的计数加1

  • 如果循环重复中的数字不是9的倍数,必须使用continue终止此次循环重复
  • 如果是9的倍数,将继续执行下一条语句,此语句给multiplesOf9计数器加1

八、综合练习

  • 显示如下图案:

      #
            ###
          #####
        #######

  • 显示如下图案

        1
              121
            12321
          1234321
        123454321

  • 百钱买百鸡问题。母鸡5元钱一只,公鸡三元钱一只,小鸡一元钱三只,现有100元钱想买100只鸡,共有多少种买法?
  • 编程:输出一数列的前n项,n的值由命令行输入。该数列的第1、2、3项为1,以后的各项是其前3项的和,即1、1、1、3、5、9、17、31、…

 

 

 

Tags: Java入门  
引用通告: 点击获取引用地址
相关文章:

Java入门5:分支结构程序  (2008-10-5 16:57:6)

Java入门4:运算符与类型转换  (2008-10-5 11:9:23)

Java入门3:类与对象的简单使用  (2008-10-4 17:9:3)

Java入门2:数据类型  (2008-10-4 10:20:46)

Java入门1:Java基础之基础  (2008-10-3 22:32:37)

评论: 0 | 引用: 0 | 浏览:
昵 称:
邮 箱:
网 站:
内 容:
   
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。