关于流程控制,几个小程序巩固你的流程控制的理解

来源:互联网 发布:final cut pro mac 编辑:程序博客网 时间:2024/05/19 19:59

     if...else语句:最常用的分支语句

     switch语句:多路分支语句

     while语句:最常用的循环语句,先检查循环条件,再执行循环体

    do...while语句:先执行循环体,再检查循环条件,循环体至少会执行一次

    for语句:先检查循环条件,再执行循环体,通常用于事先确定循环次数的场合

一、条件语句

if...else,while,do...while,for语句的条件表达式都必须是布尔表达式,不能为数字类型。switch表达式和case表达式必须是byte、short、char或int类型,而且case表达式必须为常量。

1、if...else语句为两路分支语句,基本语法为:

    if(布尔表达式){

                  程序代码块;//布尔表达式为true,执行这段代码

                }else{

                   程序代码块;//布尔表达式为false,执行这段代码

                }

     if...else语句的注意事项:

     a、if后面的表达式必须是布尔表达式,而不能是数字类型;

         int x =0;
       if (x) {//编译出错,注意这儿写x=0也是不对的,一开始原以为赋值表达式是可以的呢,正确做法是把if(x)该为if(x!=0)
        System.out.println("x不等于0");
             }else{
        System.out.println("x等于0");
            }      

     b、if语句后面的else语句不是必需的;

     c、假如if语句或者else语句的程序代码块中包括多条语句,则必须放在大括号内;若程序代码只有一条语句,则可以不用大括号{}。流程控制语句可以作为一条语句对待

        int a = 1,b=1;

        if(a>b)

              a++;

       b--;

       System.out.println("a="+a+"b="+b);// 打印a=1,b=0

      d、if...else语句的一种特殊串联编程风格

          if (condition1) {
                 statement1
                        } else if(condition2) {
                statement2
                      }else if (condition3) {
               statement3  
                    } else {
               statement4
                  } 

2、switch语句为多路分支语句,它的基本语法为:           

               switch (expr) {
                       case value1:
                           statements;
                          break;
                          ...
                     case valueN:
                            statements;
                            break;

                      default:
                          statements;
                         break;
                         }

     switch语句的使用注意事项:

a、

在switch(expr)语句中,expr表达式的类型必须是与int类型兼容的基本类型,所谓与int类型兼容,就是指能自动转换为int类型,因为expr表达式的合法类型包括byte、  short、char和int类型,long和浮点类型不能自动转换为int类型,因此不能作为expr表达式的类型。

     double d = 11.2;

    switch(d){//编译出错,类型不匹配

                    }

b、在case valueN子句中,valueN必须满足以下条件:

     1、valueN的类型必须是与int类型兼容的基本类型,包括byte、  short、char和int类型

     2、valueN必须是常量

     3、各个case子句的valueN表达式的值不同

 int x = 4,y = 3; final byte z = 4; switch (x) { case 1://合法  System.out.println("1");  break; case 4/3+1://合法,4/3+1为int类型的常量表达式  System.out.println("2");  break; case 1://编译出错,不允许出现重复的case表达式  System.out.println("repeat 1");  break; case y://编译出错,y不是常量  System.out.println("3");  break; case z://合法,z是与int兼容的常量  System.out.println("4");  break; case 5,6,7://编译出错,case表达式的语法不正确  System.out.println("5,6,7");  break; default:  break; }

c、在switch语句中最多只能有一个default子句,default子句是可选的。当switch表达式的值不与任何case子句匹配时,程序执行default子句,假如没有default子句,则程序直接跳出switch语句,default子句可以位于switch语句中的任何位置,通常都将default子句放在所有case子句的后面

d、如果switch表达式与某个case表达式匹配,或者与default情况匹配,就从这个case子句或者default子句开始执行,假如遇到break语句,就跳出整个switch语句,否则一次执行switch语句中的后续的case子句,不再检查case表达式的值

int x = 5;switch (x) {default:System.out.println();//x与default情况匹配,因此从这行开始执行break;case 1:System.out.println("case1");case 2:System.out.println("case2");case 3:System.out.println("case3"); break;case 4:System.out.println("case4");}以上代码的打印结果为:defaultcase1case2case3


e、switch语句的功能也可以用if...else语句来实现

在某些情况下,假如决定流程分支的条件表达式的类型与int类型兼容,则使用switch语句会使程序更加简洁,可读性更强。而if...else语句的功能比switch语句的功能更强大,它能够灵活控制各种复杂的流程分支。

二、循环语句

循环语句的作用是反复执行一段代码,知道不满足循环条件为止,循环条件一般包括以下4个部分:

  初始化条件:用来设置循环的的一些初始条件,比如设置循环控制变量的初始值

  循环条件:这是一个布尔表达式,每次循环都要对该表达式求值,以判断是否继续循环还是终止循环,其中通常会包含循环控制变量

  循环体:循环操作的主体部分,可以是一条语句,也可以是多条语句

  迭代部分:通常属于循环体的一部分,用来改变循环控制变量的值,从而改变循环表达式的布尔值

Java语言提供了3种循环语句:

    while语句:最常用的循环语句,先检查循环条件,再执行循环体

    do...while语句:先执行循环体,再检查循环条件,循环体至少会执行一次

    for语句:先检查循环条件,再执行循环体,通常用于事先确定循环次数的场合

1、while语句 最基本的循环语句,格式如下,其中初始化部分是可选的。

[初始化部分]

while(循环条件){

循环体,包括迭代部分

}当代表循环条件的布尔表达式的值为true时,就重新执行循环,否则终止循环。

使用注意事项:

a、如果循环体内有多条语句,必须将其放在大括号内,若循环体只有一条语句,则可以不用大括号

b、while语句在循环一开始就计算条件表达式,弱表达式的值为false,则循环体一次也不会执行

c、while语句(for语句和do...while语句)的循环体可以为空,这是因为一个空语句在语法上是合法的

d、对于while语句(for语句和do...while语句),都应该确保提供终止循环的条件,避免死循环

2、do...while语句

do...while语句首先执行循环体,然后再判断循环条件,基本格式如下,初始化部分是可选的。

[初始化部分]

do{

循环体,包括迭代部分

}while(循环条件)

在任何情况下,do...while语句会至少执行一次循环体,然后再判断循环条件,当代表循环条件的boolean表达式为true时,就继续执行循环体,

否则终止循环

3、for语句

for语句与while语句一样,也是先判断循环条件,再执行循环体,它的格式为:

for(初始化条件;循环条件;迭代条件){

                                循环体

                                                   }

在执行for语句时,先执行初始化部分,这部分只会被执行一次,接下来计算作为循环条件的布尔表达式,如果为true,就执行循环体,接着执行迭代部分,然后再计算作为循环条件的布尔表达式,如此反复。

 

for (int i = 3; i > 0; System.out.println("i="+(--i))) {System.out.println("循环体打印:i="+i);}

运行结果为:

循环体打印:i=3
i=2
循环体打印:i=2
i=1
循环体打印:i=1
i=0

注意事项:

a、如果for语句的循环体只有一条语句,可以不用大括号

b、控制循环的变量常常只用于笨循环,而不用在其他地方,这种情况下,可以在循环的初始化部分声明变量

for(int n=1;n<=10;n++){

      System.out.println("ticket "+n);


 c、在初始化部分和迭代部分可以使用逗号语句。逗号语句是用逗号分隔的语句序列

public static int[] inverse(int[] oldArray){  if (oldArray==null||oldArray.length==0)    throw new IllegalArgumentException("无效的数组");   int [] newArray = new int[oldArray.length];   for (int i = 0, j = oldArray.length-1;i<oldArray.length; i++,j--) {    newArray[j]=oldArray[i];       }    return newArray;   }


d、for语句的初始化部分、循环条件或者迭代部分都可以为空

e、作为一种编程惯例,for语句一般用在循环次数事先可以确定的情况下,而while和do...while语句则用在循环次数事先不可确定的情况下

原创粉丝点击