当前位置:课程学习>>第三章 运算符与流程控制>>文本学习>>知识点二


知识点二  程序流程控制语句




一. if语句

if语句是根据条件来执行相应的语句,主要格式有以下三种:

(1) if(条件表达式) { 语句序列; }

(2) if(条件表达式) { 语句序列1;}

  else { 语句序列2; }

(3) if(条件表达式1){

  语句序列1;

}

else if (条件表达式2){

  语句序列2;

}

else if(条件表达式3) {

  语句序列3;

}

……

else {

  语句序列n;

}

此外if语句还可以嵌套使用,例如

if(条件表达式1){

   ……

if(条件表达式2){

   ……

}

   ……

}

【例3.4】if语句的用法实例:利用if语句来判断给定的年份是否为闰年(满足“能被400整除或者能被4整除但不能被100整除”的条件的年份就是闰年)

1 //IsLeapYear.java

2 public class IsLeapYear

3 {

4   public static void main(String[] args)

5   {

6   //使用if...else 语句实现

7     int year=2000;

8     if((year%4==0 && year%100!=0) || (year%400==0))

9       System.out.println(year+" is a leap year.");

10     else

11       System.out.println(year+" is not a leap year.");  

12   //使用if ... else if ... else 语句实现

13     year=2007;

14     if(year%4!=0)

15       System.out.println(year+" is not a leap year.");

16     else if(year %100 !=0)

17       System.out.println(year+" is a leap year.");

18     else if(year%400!=0)

19       System.out.println(year+" is not a leap year.");

20     else

21       System.out.println(year+" is a leap year.");

22   }

23 };

序运行结果为:

2000 is a leap year.

2007 is not a leap year.

二. switch……case语句

switch……case语句是一种多分支语句,其语法结构如下([ ]表示是可选项):

switch(变量a)

   {

     case n1:

       [语句序列1;]

       [break;]

     case n2:

       [语句序列2;]

       [break;]

       ……

     case nn:

       [语句序列n;]

       [break;]

       [default:]

       [语句序列n+1;]

}     

在switch……case语句中,变量a可以是int型,也可以是char型,而不能为其他数据类型。而case后面的n1、n2…nn必须是与int型或char型的常量,而不能是变量,此外n1、n2……nn之间不能相同。default语句是可选的。break语句是用来退出switch结构的,若无break,程序将会从满足条件的case开始依次执行后面的所有语句序列。switch语句应以{ }括起来。switch语句可以转换为相应的if语句结构,不过程序就会显得很臃肿。

【例3.5】switch……case语句的用法实例:利用switch……case语句来判断给定的成绩等级(90~100为优秀,80~89为良好,70~79为中等,60~69为及格,60分以下为不及格)。

1 //SwitchCase.java

2 public class SwitchCase

3 {

4   public static void main(String args[])

5   {

6     int mygrade=91;

7     int grade=mygrade/10;

8     switch(grade)

9     {

10       case 10:

11       case 9:

12         System.out.println("优秀!");

13         break;

14       case 8:

15         System.out.println("良好!");

16         break;

17       case 7:

18         System.out.println("中等!");

19         break;

20       case 6:

21         System.out.println("及格!");

22         break;

23       default:

24         System.out.println("不及格!");

25     }

26   }

27 }

程序运行结果为:

优秀!

提示:去掉【例3.5】中第13行、第16行、第19行、第22行的break语句,试着编译运行,比较一下修改前后的结果。把第20行的6改为8,试着编译运行看看结果。

三. while语句、do while语句

1. while语句

while语句是循环结构中的一种,其语法格式为:

    初始化语句;

    while(循环条件表达式)

    {

      语句序列;

      迭代语句; //用于变更循环条件

    }

当循环条件表达式为true时,就循环执行语句序列和迭代语句,具体结构图如图3.1。

   

4      5
  图3.1 while循环结构示意图       图3.2 do……while循环结构示意图

2. do while语句

do……while语句也是循环结构中的一种语句,和while循环非常类似,格式为:

    初始化语句;

    do

    {

      语句序列;

      迭代语句;

    } while(条件表达式);

首先执行一遍循环体内的语句序列和迭代语句,然后判断条件表达式,若为true则继续执行循环体,否则终止循环,其结构图如图3.2所示。

相对while循环来说,do……while至少执行循环语句一次。

【例3.6】while循环和do……while循环的用法。

1 //WhileAndDoWhile.java

2 public class WhileAndDoWhile

3 {

4   public static void main(String[] args)

5   {

6     int a=1,b=1;

7     while(a<1)

8       a++;

9     do

10     {

11       b++;

12     }while(b<1);

13       System.out.println("a="+a+",b="+b);

14   }

15 }

程序的输出结果为: a=1,b=2

从上面这个例子的运行结果就可以看出do……while至少要执行一次循环体。

提示:如果把【例3.6】中第7行改为while(a<10),第13行改为while(b<10);编译运行看看程序的输出结果会是什么。

四.for语句

for语句是Java语言中提供的另一种循环语句,它的语法结构如下:

    for (循环初始化语句;循环条件表达式;迭代语句){ 循环体语句序列; }

首先执行循环初始化语句,然后判断循环条件表达式,如果为true,则执行循环体,然后执行迭代语句。然后再去判断循环条件表达式,一直循环直到循环条件表达式的值为false时结束。其结构示意图如图3.3所示。

6

图3.3 for循环示意图

for循环中的初始化语句和循环条件表达式以及迭代语句均可以为空,但它们之间的分号不能省略。如for(;;);它等价于一个无限循环语句。

对于初始化语句和迭代语句还可以使用逗号表达式,以进行多个操作。如:

    for(int i=0,int j=10;i<j;i++,j――)

【例3.7】for循环的用法,利用for循环结构输出一个九九乘法表。

1 //ForStatement.java

2 public class ForStatement

3 {

4   public static void main(String[] args)

5   {

6     for (int i=1;i<=9 ;i++ )

7     {

8       for (int j=1;j<=9;j++ )

9       {

10         System.out.print(j+"*"+i+"="+j*i+" ");

11         if (i==j)

12         {

13           System.out.print("\n");

14           j=9;

15         }

16       }

17     }

18   }

19 };

程序输出结果如图3.4所示。

7

图3.4 for循环打印出来的九九乘法口诀表

五. 程序运行结束语句

1. break语句

break语句可以用在switch语句、while循环、do……while循环和for循环结构中。switch语句中的break语句是用来中断下一个case的比较,转到紧跟switch语句的下一条语句继续执行。循环结构中的break语句有两种用法:

    break;

    break 标签;

单独的break语句是用来终止break语句所在的循环体,转到循环结构后的下一条语句执行,而break标签,则是终止标签所指的代码段,转到标签所指代码段后的下一条语句继续执行。

在Java中可以对一段代码命名,用{ }把这段代码括起来,形成代码段,在最前面设置一个标签来代表该代码段。格式为:

    标签名:{

      代码段;

    }

【例3.8】break语句的用法,输出一个九九乘法表。

1 //BreakUsage.java

2 public class BreakUsage

3 {

4   public static void main(String[] args)

5   {

6     int i,j;

7     //label:

8     for (i=1;i<=9;i++)

9     {

10       System.out.print(i+": ");

11       for (j=1;j<=9;j++)

12       {

13         System.out.print(i+"*"+j+"="+i*j+" ");

14         if(i==j)

15           break;

16         //break label; 

17       }

18       System.out.print("\n");

19     }

20   }

21 };

程序的运行结果如图3.5所示。

8

图3.5 break语句运行结果

如果把第14行和第15行加上注释,重新编译运行,则运行结果如图3.6所示。

9

图3.6 没有break语句时运行结果

如果把第7行中的注释//去掉,第15行的break加上注释,第16行的注释//去掉,重新编译,修改后的程序的运行结果如图3.7所示,请注意对比修改前后运行结果的不同。

10

图3.7 加break标签后程序的运行结果

2. continue语句

continue语句和break语句的作用非常类似,不过continue语句只能用在循环结构中,此外break语句是终止循环体而转到循环体后的下一条语句执行,而continue只是终止当前这一轮循环,转到下一轮循环继续执行循环体语句。continue语句也可以象break语句一样和标签一起使用,格式为:continue 标签;

【例3.8】break语句和continue语句的区别。

1 //BreakAndContinue.java

2 public class BreakAndContinue

3 {

4   public static void main(String[] args)

5   {

6     System.out.println("break statement start:");

7     for(int i=1;i<=9;i++)

8     {

9       if(i==5)

10         break;

11       System.out.print("i="+i+" ");

12     }

13     System.out.println("\n");

14     System.out.println("continue statement start:");

15     for(int i=1;i<=9;i++)

16     {

17       if(i==5)

18         continue;

19       System.out.print("i="+i+" ");

20     }

21   }

22 };  

程序的运行结果如图3.8所示,在break语句中只能输出1,2,3,4,到5时由于break语句所以后面的循环(5,6,7,8,9轮)都被终止掉了,而在continue语句中到5时遇到continue语句时只是终止了5这一轮的循环,6,7,8,9轮循环则能继续执行。

11

图3.8 break语句和continue语句的对比

3. return语句

return语句一般只用在方法体中,用于退出该方法,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续执行。return语句有两种格式:

       return 表达式或变量或常量; //方法需要具体的返回值

return; //方法无返回值,即用void声明的方法

 

进入知识归纳学习