Java程序结构(循环,分支)

流程控制语句

    (1) 双分支选择结构:if/else语句用来判定一个条件(布尔表达式),当条件为真(true)时执行一个操作,条件为假(false)时执行另一个操作。

   (2) 单分支选择结构:省略了else的if语句在条件为真时执行一个操作,条件为假时则跳过该操作。

   (3) 多分支选择结构:switch语句则是根据表达式的值来决定执行许多不同操作中的某一个操作。

一、选择结构

1.if语句的基本形式

if(布尔表达式)  语句1

else   语句2

其中:

(1)布尔表达式一般为关系表达式或逻辑表达式,其值为true或false.

(2)[]所括的else子句部分是可选的,它必须和if成对出现。

(3)语句1和语句2可以是单条语句,也可以是复合语句。

(4)if语句的执行过程为:如果布尔表达式值为真,则执行语句1; 否则就执行语句2。当不出现else子句且表达值为false时,则不执行if中包含的语句。

例如:案例中如下程序段:

if(i%4==0&&i%100!=0||i%400==0) Ospa3+=2;//(多分支选择结构)

else Ospa3++;

可以改写为:

Ospa3++;//平年加1(单分支选择结构)

if(i%4==0&&i%100!=0||i%400==0) Ospa3++;//若是闰年再加一天

2、if语句的嵌套:现生活中的条件是很复杂的,在一定的条件下,又需要满足其它的条件才能确定相应的操作。为此Java提供了if语句的嵌套功能即一个if语句能够出现在另一个if语句或if-else语句里。

注意:Java编译器是将else与离它最近且未配对的if组合在一起,除非用花括号{}指定不同的匹配方式。

例如:案例中判断某一年是否为闰年的代码还可以改写成如下形式

if(YEAR%4==0)

       if(YEAR%100!=0)

        leap=true;

       else

            if(YEAR%400==0)leap=true;

下面是输入成绩给出评语的成绩,成绩由键盘输入。

import java.util.Scanner;

public class IfDemo6 {

public static void main(String[] args) {

    int score = 79;//输入成绩

 Scanner input = new Scanner(System.in);//构造一个对象

  System.out.println("请输入成绩");

   int score=input.nextInt();//输入一个数据

           if (score>80){

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

           }else if(score>70){

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

               }else if (score>60){

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

                    }else {

                         System.out.println("差");

    }

}

}

3、多分支选择结构switch语句

其格式如下:switch(表达式)

          { case  值1:语句区块1;[ break; ]//分支1

            case  值2:语句区块2;[ break; ]//分支2

            ……

            case  值n:语句区块n;[ break; ]//分支n       

            [default:语句区块n+1;]}

其中:(1) 表达式的值和case子句中的常量值的类型必须一致。

        (2)各case子句中的常量值不能相同。

        (3)语句可以是单条语句,也可以是复合语句。

switch语句的执行过程如下:首先对switch后面圆括号内表达式的值进行算,然后从上至下找出与表达式的值相匹配的case,以此作为入口,执行switch结构中后面的各语句块,若表达式的值与任何case均不匹配,则执行default后面的语句块。如果没有default部分,将不执行switch语句中的任何语句块,而直接转到switch语句后的语句执行。

注意:case子句只起到一个标号的作用,用来查找匹配的入口,并从些开始执行其后面的语句块,对后面的case子句不再进行匹配。因此,在每个case分支后用break语句来终止后面的case分支语句的执行。有一些特殊情况,如多个不同的case值要执行一组相同的语句块,在这种情况下,可以不用break语句。Case子句和default子句的次序是任意的,且case子句的次序也不要求按常量值的顺序排列

案例中使用switch语句设置每月1日的星期和每月总天数的代码如下:

switch(j/7)

      {case 0:         spa1=Ospa3%7;cou1=31;                //1月                        spa2=(spa1+cou1)%7;cou2=leap?29:28;  //2月

                               spa3=(spa2+cou2)%7;cou3=31;                //3月

                                Ospa3=spa3;break;

        case 1:            spa1=(Ospa3+cou3)%7;cou1=30;            //4月

                               spa2=(spa1+cou1)%7;cou2=31;            //5月

                               spa3=(spa2+cou2)%7;cou3=30;            //6月

                               Ospa3=spa3;  break;

        case 2:            spa1=(Ospa3+cou3)%7;cou1=31;           //7月

                               spa2=(spa1+cou1)%7;cou2=31;           //8月

                               spa3=(spa2+cou2)%7;cou3=30;           //9月

                               Ospa3=spa3;    break;

        case 3:            spa1=(Ospa3+cou3)%7;cou1=31;          //10月

                               spa2=(spa1+cou1)%7;cou2=30;          //11月

                               spa3=(spa2+cou2)%7;cou3=31;          //12月

                                break;

                        }//switch语句结束

二、循环结构

Java语言提供的循环语句有:

         while语句、do-while语句和for语句。

1、while语句

while语句的一般形式为:

while(布尔表达式){循环体语句区块}

执行过程:首先计算表达式的值,若表达式的值为true时执行循环体内的语句块,执行完后再次计算表达式的值,重复上述过程。直到表达式的值为false时退出循环。

while语句的特点是:先计算表达式的值,然后执行语句,因此当表达式的值一开始就为false时,循环体将一次也不执行

注意:为了避免产生“死循环”,循环控制变量要动态变化或在循环体中有使循环趋向于结束的语句。

例如:案例中在屏幕上输出星期列表程序段可以采用while循环

i=1;                       //循环变量赋初值

while(i<=3) {System.out.print(Weeks);i++;}

//每行输出三个星期列表

 

2、do-while语句

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

do{ 循环体语句区块

  }while(布尔表达式);

执行过程:首先执行作为循环体的语句,然后再计算表达式的值,当表达式的值为true时,再执行循环体中的语句,重复上述过程,直到表达式的值为false时结束循环。

特点:先执行循环体,然后计算表达式的值,因此即使一开始条件就不成立,循环体也执行一次。

注意:结尾处while(布尔表达式)后的分号不能省略。

例如:前面案例中在屏幕上输出星期列表程序段也可以改写成如下形式

i=1;    //循环变量赋初值

do

{System.out.print(Weeks);i++;

} while(i<3) ;//每行输出三个星期列表

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

do{ 循环体语句区块

  }while(布尔表达式);

执行过程:首先执行作为循环体的语句,然后再计算表达式的值,当表达式的值为true时,再执行循环体中的语句,重复上述过程,直到表达式的值为false时结束循环。

特点:先执行循环体,然后计算表达式的值,因此即使一开始条件就不成立,循环体也执行一次。

注意:结尾处while(布尔表达式)后的分号不能省略。

例如:前面案例中在屏幕上输出星期列表程序段也可以改写成如下形式

i=1;    //循环变量赋初值

do

{System.out.print(Weeks);i++;

} while(i<3) ;//每行输出三个星期列表

3、for语句

for语句的一般形式为:

for([表达式1];[表达式2];[表达式3]) 语句

说明:表达式1通常用于变量的初始化,表达式2是一个布尔表达式,一般用来判断循环是否继续执行,表达式3通常用于更新循环控制变量的值。语句又称循环体,是for语句重复执行的部分。

执行过程:(1)求解表达式1.(2)求解表达式2,若其值为true执行语句,否则退出循环。(3)求解表达式3,转2

特点:表达式2一开始就为flase时,循环体将一次也不执行。

注意:

Ø 语句可以是简单语句也可以是复合语句。

Ø 三个表达式均可以省略,但作为分隔符的分号一定要保留。当表达式2省略时相当于无限循环,这时就要在循环体中设置相应的语句我,以结束循环。

Ø for语句中表达式1和表达式3可以是简单表达式,也可以是逗号表达式

例如:案例中输出星期列表的程序段如下:

for(i=1;i<=3;i++) System.out.print(Weeks);

4、循环嵌套

循环嵌套是指在循环体内包含循环语句的情形。Java语言提供的三种循环结构可以自身嵌套,也可以相互嵌套。循环嵌套时应该注意的是:无论哪种嵌套关系都必须保证每一个循环结构的完整性,不能出现交叉。

三跳转控制语句

•     break语句 :退出循环结构

•     continue语句 :退出本次循环

•      return语句 :用于方法的返回

1、break语句 

break语句通常有不带标号(break;)和带标号(break  Lab;)两种形式.其中:break是关键字;Lab是用户定义的标号。

    break语句主要用于switch结构和循环结构中,控制程序的执行流程转移。其应用主要有以下三种情况:

Ø 用在switch语句中,作用是强制退出switch结构。

Ø 用在单层循环结构中作用是强制退出循环结构。

Ø 带标号的switch语句用在多层循环结构中,用于一次性退出多重循环。前提是标号必须写在多层循环体中外层循环入口上方。

2、continue语句

continue语句只能用于循环结构中,其作用是跳出本次循环。它有下述两种形式:

continue;

continue   lab;

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

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

3、return语句

return语句用于方法的返回上,当程序执行到return语句时,终止当前方法的执行,返回到调用这个方法的语句。return语句通常位于一个方法体的最后一行,有带参数的和不带参数的两种形式,带参数形式的return语句退出该方法时并返回一个值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值