程序流程控制

1.选择结构程序设计

          java语言提供了两条基本的分支选择语句:if语句和switch语句,用这两种语句了以形成以下三种形式的选择结构:

          1.双分支选择结构。由if/switch语句构成,用来判定一个条件,当条件为真时执行一个操作,当条件为假时执行另一个操作。

          2.单分支选择结构。由省略了else的if语句构成,当条件为真时执行一个操作,当条件为假时跳过该操作。

          3.多分支选择结构。由switch语句构成,根据表达式的值来决定执行许多不同操作中的某一个操作。当然,使用嵌套的if语句也可以实现多分支选择结构。

    1.1 if语句

          if语句是构造分支选择结构程序的基本语句。使用if语句的基本形式,可以构造双分支选择结构程序;使用省略了else的if语句可以构造单分支选择结构程序;使用嵌套的if语句可构造多分支选择结构程序。下面分别讲述这三种形式:

    1.1.1 if语句的基本形式

          if语句的基本形式如下:

if(布尔表达式)

    语句区块1;

else

    语句区块2;

示例代码如下:

package test;
public class Test {
    public static void main(String[] args) { 
        int grade;
        grade=86;
        if(grade>=60)
        {
            System.out.println("通过,成绩是:");
            System.out.println(grade);
        }
     else
            System.out.println("不合格");
    }
    
}
 

    1.1.2省略了else的if语句

          在if语句当中,省略了else可以形成单分支选择结构。

示例代码如下:

package test;
public class Test {
    public static void main(String[] args) { 
        int grade;
        grade=68;
        if(grade>=60)
        {
            System.out.println("通过,成绩是:");
            System.out.println(grade);
        }

    }
    
}

    1.1.3 if语句的嵌套

          在实际问题当中,往往并不是由一个简单的条件就可以决定执行某种操作,而是需要有若干个条件来决定执行若干个不同的操作。if语句的嵌套基本形式如下:

if(布尔表达式 1) 语句区块 1

    else if(布尔表达式 2) 语句区块 2

        else if(布尔表达式 3) 语句区块 3

            ......

                else 语句区块 n+1      

示例代码如下:

package test;
public class Test {
    public static void main(String[] args) { 
        int grade=77;
        if(grade>=90&&grade<100)System.out.println("成绩:优");
            else if(grade>=80) System.out.println("成绩:良好");
            else if(grade>=70) System.out.println("成绩:中等");
            else if(grade>=60) System.out.println("成绩:合格");
            else System.out.println("不合格");
        
    }
    
}

    1.2 swtich语句

          当要从多个分支中选择一个分支去执行,我们通常喜欢用switch语句,虽然可以用嵌套的if语句来表达,但是switch语句能够更加清晰的处理多分支选择问题。switch语句根据表达式的值来执行多个操作中的一个,其格式如下:

switch(表达式)

{        case 值 1: 语句区块1;break;

         case 值 2: 语句区块2;break;

         ......

         case 值 n: 语句区块n;break;

        [defalut : 语句区块n+1;]//可以省略不写

}

说明:

        1.switch后面的表达式的类型可以是byte,char,short和int(不允许时浮点数类型和long);

        2.case后面的值是与表达式类型相同的常量,但是它们之间的值应该各不相同,否则就会出现互相矛盾的情况;

        3.defalut语句可以省去不要;

        4.当表达式的值与某个case语句后面所跟的值一致时,就执行该行case语句;

        5.一个case语句完成,必须加上break符号;若没有break符号,则执行完第一个匹配上的case语句之后会继续执行之后的所有case语句,而不管这些语句块前的case值是否完全匹配。

示例代码如下:

package test;
public class Test {
    public static void main(String[] args) { 
        int grade=88;
        int k=grade/10;
        switch(k)
        {
            case 10:
            case 9:System.out.print("成绩:优异");break;
            case 8:
            case 7:System.out.print("成绩:良好");break;
            case 6:System.out.print("成绩:及格");break;
            default: System.out.print("成绩:不合格");
            
        }
        
    }
    
}

    1.3 条件运算符

            对于一些简单的if/else语句,可以运用条件运算符来代替。例如:

if(x>y)   m=x;

else   m=y;

          则可以使用下面的条件运算符来代替:

m=(x>y)?x:y;

          若x>y为真,则m返回x的值;反之m返回y的值。条件表达式的一般形式为:

布尔表达式1?表达式2:表达式3

          在条件表达式中值得注意的是:

     1.表达式2和表达式3的类型必须相同;

    2.条件表达式的求解顺序是:先求解表达式1,若为真则执行表达式2,此时表达式2的值将作为整个条件表达式的值进行后续操作;反之执行表达式3。

          在实际应用当中,常常将条件运算符与赋值运算符结合起来,构成赋值表达式,以代替比较简单的if/else语句。条件运算符的优先级高于赋值运算符。因此,其结合方向为从右至左。

          示例代码如下:

package test;
public class Test {
    public static void main(String[] args) { 
        int x,y,z,a,b;
        a=1;
        b=2;
        x=(a>b)?a:b;
        y=(a!=b)?a:b;
        z=(a<b)?a:b;
        System.out.print("\tx="+x);
        System.out.print("\ty="+y);
        System.out.print("\tz="+z);
        
    }
    
}

2.循环结构程序设计

          循环语句的作用是反复执行一段程序代码,直到满足终止条件为止。java语言中提供的循环语句有while语句;do-while语句和for语句。下面我们将依次介绍:

    2.1 while语句

          while语句的一般形式为:

while(布尔表达式)

{

          循环体语句区块

}

          while语句中各个成分的执行次序是:先判断布尔表达式的值,若表达式为假,则不进入循环体结构;当布尔表达式为真时,进入循环体语句区块并执行,然后再次判断布尔表达式,如此反复,直到布尔表达式的值为假,至此跳出循环体执行后续代码。

          示例代码如下:

package test;
public class Test {
    public static void main(String[] args) { 
        int num=1;
        while(num<=5)
        {
            System.out.println("num="+num);
            num++;
        }
        
    }
    
}
 

    2.2 do-while语句

          do-while语句的一般形式为:

do{

    循环体语句区块

}while(布尔表达式)

          do-while语句中各个成分的执行次序是:先执行依次循环体语句区块,在判断布尔表达式的值,若为假,则跳出do-while语句,执行后面的程序;反之,则再次执行循环体语句区块。如此反复,直到布尔表达式的判断值为假,然后跳出do-while语句,至此循环完成。

         值得注意的是do-while语句和while语句的区别仅仅在于do-while语句之间的循环体至少执行一次,而while语句的循环体可以一次都不执行。

          示例代码如下:

package test;
public class Test {
    public static void main(String[] args) { 
        int n=0;
        int sum=0;
        do{
            n++;
            sum+=n;
        }while(sum<=100);
                System.out.println("sum="+sum);
                System.out.println("n="+n);
    }
    
}

    2.3 for语句

              for语句的一般表达式为:

for(初值表达式;布尔表达式;循环过程表达式)

{

         循环体语句区块

}

          其中:初值表达式对循环变量赋予初值;布尔表达式用来判断循环是否继续;循环过程表达式完成修改变量,改变循环条件的任务。其执行的顺序为:先求解初值表达式;求解布尔表达式,若为真,执行循环体语句区块,然后求解循环过程表达式,再跳回求解布尔表达式循环执行,直到布尔表达式为假,循环完成;若布尔表达式直接为假,则不执行for语句。

          示例代码如下:

package test;
public class Test {
    public static void main(String[] args) { 
        int sum=0,n;
        for(n=1;n<=100;n+=2)
        {
            sum+=n;
        }
        System.out.println("sum="+sum+"  n="+n);
    }
    
}

    2.4 循环嵌套

          循环嵌套是指在循环体内包含有循环语句的情形。java语言提供的三种循环结构可以自身嵌套,也可以相互进行嵌套。但是需要注意的是在进行嵌套的时候需要保证每一个循环的完整性。

          示例代码如下:

package test;
public class Test {
    public static void main(String[] args) { 
        for(int i=1;i<=10;i++)
        {
            for(int j=1;j<=11-i;j++)
            {
                
                System.out.print(" ");//在输出数字之前输出相对应的个数的空格
            }
            for(int j=1;j<=i;j++)
            {
                if(i>=10)
                    System.out.print(+i+" ");//当i=10,输出的数之间相隔一个空格
                else
                    System.out.print(+i+"  ");//当i<10,输出的数之间相隔一个空格
            }
            System.out.println(" ");
        }
    }
    
}

3.break语句和continue语句

    3.1 break语句

          break语句通常有不带标和带标号两种形式;

break;

break lab;

          其中:break是关键字,lab是用户定义的标号。

          break语句虽然可以独立使用,但通常主要用于switch结构和循环结构当中,控制程序的执行流程转移。 break语句的应用有下列三种情况:

    1.break语句用在switch语句当中,其作用是强制退出switch结构,执行switch结构后的语句。

    2.break语句用在单层循环结构的循环体中,其作用是强制退出循环结构。若程序中有内外两重循环,而break语句写在了内循环当中,则执行break语句只能退出内循环,而不能退出外循环,若想要退出外循环,则可以使用带标号的break语句。

    3.break lab语句用在循环的语句当中(必须在外循环入口语句的前方写上lab标号),可以是程序流程退出标号所指的外循环。

    3.2 continue语句

          continue语句只能用于循环结构当中,其作用是使循环短路,它有以下两种形式;

    continue;

    continue lab;

其中:continue是关键字;lab是标号。

          1.continue语句也称循环的短路语句。在循环结构当中,当程序执行到continue语句时会返回到循环的入口处,执行下一次循环,而使循环体内写在continue语句后的语句不执行。

          2.当程序中有嵌套的多层循环时,为了从内循环跳到外循环,可以使用带标号的continue lab语句。此时需要在外循环的入口语句之前加上标号。

  • 26
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值