二、第四章流程控制

(1)流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。

(2)其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构、分支结构、循环结构

流程控制分为:

二、第四章流程控制_第1张图片

一、复合语句

与C语言及其他语言相同,java语言的复合语句是以整个块区为单位的语句,所以又称块语句。复合语句由开括号“{”,闭括号“}”结束。

例如,在定义一个类或方法时,类体就是以“{”与“}”作为开始与结束的标记,方法体同样也是以“{”与“}”作为标记。复合语句中的每个语句都是从上到下被执行。复合语句以整个块为单位,能够用在任何一个单独语句可以使用的地方,并且在复合语句中还可以嵌套复合语句。

例如,下面这段代码,在主方法中定义了复合语句块,复合语句块中还可以包含另一复合语句块

二、第四章流程控制_第2张图片

 在使用复合语句时要注意,复合语句为局部变量创建了一个作用域,该作用域为程序的一部分,在该作用域中某个变量被创建并能够被使用。如果在某个变量的作用域外使用该变量,则会发生错误。例如,在上述代码中,如果在复合语句外使用变量 y、z、b将会出现错误,而变量x可在整个方法体中使用。

二、条件语句

条件语句可以根据不同的条件执行不同的语句,条件语句包括if条件语句与switch多分支语句。

1、if条件语句

if 条件语句是一个重要的编程语句,用于告诉程序在某个条件成立的情况下执行某段语句,而在另一种情况下执行另外的语句。

使用if条件语句,可选择是否要执行紧跟在条件之后的那个语句。关键字if之后是作为条件的“布尔表达式”。如果该表达式返回的结果为true,则执行其后的语句:如果为false,则不执行if条件之后的语句。if 条件语句可分为简单的 if条件语句、if...else 语句和 if...else if 多分支语句。

(1)简单的if条件语句

语法如下:

if(布尔表达式){

               语句序列

}

布尔表达式:

必要参数,表示最后返回的结果必须是一个布尔值。它可以是一个单纯的布尔变量或常量,也可以是使用关系或布尔运算符的表达式。

语句序列:

可选参数。可以是一条或多条语句,当表达式的值为 true 时执行这些语句。若语句序列中仅有一条语句,则可以省略条件语句中的“{ }”。

如果语句序列中只有一条语句,可以采用以下写法:

int=100;

       if(a==100)

       System.out.print(“a的值是100”);

简单的if条件语句的执行过程

判断手机号码是否存在,创建Takephone类,模拟拨打电话场景,如果电话号码不是84972266,则提示拨打的号码不存在。

二、第四章流程控制_第3张图片

二、第四章流程控制_第4张图片

 

(2)if...else语句

if...else语句是条件中最常用的一种形式,它会针对某种条件有选择的做出处理。通常表现为“如果满足某种条件,就进行某种处理,否则就进行另一种处理。

注意:if后面“O”内的表达式的值必须是 boolean 型的。如果表表达式的值为 true,则执行紧跟if语句的复合语句:如果表达式的值为 false,则执行 else 后面的复合语句句。

同简单的if条件语句一样,如果if...else 语句的语句序列中只有一条语句(不包括注释),则可以省略该语句序列外面的“{}”。有时为了编程的需要,else 或或f后面的“{}”中可以没有语句。

使用if...else语句校验密码

在项目中创建Login类,在主方法中定义变量,并通过使用if...else语句判断变量的值来决定输出结果。

二、第四章流程控制_第5张图片

二、第四章流程控制_第6张图片

 

(3)if...else多分支语句

if...elseif多分支语句用于针对某一事件的多种情况进行于处理。通常表现为“如果满足某种条件,就进行某种处理,否则如果满足另一种条件则执行另一种处理”。

条件表达式 1~条件表达式 n:

必要参数。可以由多个表达式组成,但最后返回的结果一定要为 boolean 类型。

语句序列:

可以是一条或多条语句,当条件表达式1 的值为 true 时,执行语句序列 1:当条 

件表达式2的值为true 时,执行语句序列 2,以此类主推。当省略任意一组语句序列时,可以保留其外面的“{ }”,也可以将“{ }”替换为“;”。

使用 if..elseif语句实现饭店座位分配

创建Restaurant 类,声明整型变量 count 表示用餐人数,根据人人数安排客人到4人桌、8人桌或包厢用餐。

二、第四章流程控制_第7张图片

二、第四章流程控制_第8张图片

 

二、switch多分支语句

检测一个变量是否符合某个条件,如果不符合,再用另一个值来检测,以此类推,这种问题使用if条件语句也可以完成。

switch 语句中表达式的值必须是整型、字符型、字符串类型或枚举类型,常量值1~n的数据类型必须与表达式的值的类型相同。

switch 语句首先计算表达式的值,如果表达式的计算结果和某个 case 后面的常量值相同,则执行该 case 语句后的若干个语句直到遇到 break 语句为止。此时,如果该 case 语句中没有 break 语句,将继续执行后面 case 中的若干个语句,直到遇到 break 语句为止。若没有一个常量的值与表达式的值相同,则执行 default 后面的语句。default 语句为可选的,如果它不存在,且 switch 语句中表达式的值不与任何 case 的常量值相同,switch 语句则不做任何处理。

使用switch语句为考试分数分级

创建Grade类,使用Scanner类在控制台输入分数,然后用switch多分支语句判断输入的分数属于哪类成绩。10分和9分属于优,8分属于良,7分和6分属于中,5分,4分,3分,2分,1分以及0分属于差。

二、第四章流程控制_第9张图片

二、第四章流程控制_第10张图片 

二、第四章流程控制_第11张图片 

二、第四章流程控制_第12张图片 

fb1582fc0c314e80a026fabce9f89516.png 

二、第四章流程控制_第13张图片 

 二、第四章流程控制_第14张图片

 

三、循环语句

循环语句共有3种常见的形式:for语句、while语句和do…while语句。

1.whihe循环语句

while语句也称条件判断语句,它的循环方式为利用一个条件来控制是否要继续反复执行这个语句。

当条件表达式的返回值为真时,则执行“{}”中的语句,当执行完“行”中的语句后,重新判断条件表达式的返回值,直到表达式返回的结果为假时,退出循环。

计算1~1000的相加结果

创建GetSum类,在主方法中通过while循环计算1~1000相加的和并输出。

二、第四章流程控制_第15张图片

 二、第四章流程控制_第16张图片

 

2、do...while循环语句

do...while 循环语句与 while 循环语句类似,它们之间司的区别是 while 语句为先判断条件是否成立再执行循环体,而 do….while 循环语句则先执行一次循环后者,再判断条件是否成立。也就是说,do...while循环语句“{}”中的程序段至少要被执行一次。

do..,while 语句与 while 语句的一个明显区别是,do...while 语句在结尾处多了一个分号。根据do...while 循环语句的语法特点总结出的 do...while循环语句的执行过程。

使用do...while语句进行用户登录验证

创建 LoginService 类,首先提示用户输入6位密码,然后使用 Scanner扫描器类获取用户输入的密码,最后进入 do..while 循环进行判断,如果用户输入的密码不是“931567”,则让用户反复输入,直到输入正确密码为止。

二、第四章流程控制_第17张图片

 二、第四章流程控制_第18张图片

 

3、for循环语句

for 循环是 Java 程序设计中最有用的循环语句之一。一个 for 循环可以用来重复执行某条语句,直到某个条件得到满足。for 循环有两种语句,一种是传统的 for 语句,一种是 foreach 语句。

(1)for语句

传统的for语句中有3个表达式:

表达式1:

初始化表达式,负责完成变量的初始化。

表达式 2:

循环条件表达式,值为 boolean 型的表达式,指定循环条件。等同于 while 循环里的表达式。

表达式 3:

每次循环结束后执行的语句,通常用来改变循环条件。

在执行 for 循环时,首先执行表达式 1,完成某一变量的初始化工作;下一步判断表达式2的值,若表达式2的值为true,则进入循环体;在执行完循环体后紧接着计算表达式 3,这部分通常是增加或减少循环控制变量的一个表达式。这样一轮循环就结束了。第二轮循环从计算表达式2开始,若表达式2返回true,则继续循环,否则跳出整个 for 语句。

使用for循环计算2~100所有的偶数之和

创建Ctrculate类,编写程序,使用for循环语句计算2~100所有的偶数之和

二、第四章流程控制_第19张图片

 二、第四章流程控制_第20张图片

 

(2)foreach语句

foreach 语句是 for 语句的特殊简化版本,不能完全取代 for 语句,但任何 foreach 语句都可以改写为 for 语句版本。foreach 并不是一个关键字,习惯上将这种特殊的 for 语句格式称为 foreach 语句。

使用foreach语句遍历整型数组

创建类Repetition,在主方法中定义一堆数组,并用foreach语句遍历该数组。

二、第四章流程控制_第21张图片

 二、第四章流程控制_第22张图片

 

四、循环控制

循环控制包含两方面的内容,一方面是控制循环变量自的变化方式,另一方面是控制循坏的跳特。撞制循坏的跳转需要用到 break 和 continue 两个关键字,这两条跳转语句的跳转效果不同,break 语句是中断循环,continue语句是执行下一次循环。

1、break语句

使用 break 语句可以跳出 switch 结构。在循环结构中,同样也可用 break 语句跳出当前循环体,从而中断当前循环。

输出1~20出现的第一个偶数

创建BreakTest类,循环输出1~20的偶数值,在遇到第一个偶数时,使用break语句结束循环。

二、第四章流程控制_第23张图片

 二、第四章流程控制_第24张图片

 

标签名:

任意标识符

循环体:

任意循环语句

break标签名:

break 跳出指定的循环体,此循环体的标签名必须与 break 的标签名一致。带有标签的 break 可以指定跳出的循环,这个循环可以是内层循环,也可以是外层循环。

使用标签让 break 结束外层循环

创建 BreakInsideNested 类,在该类中写两层 for循环,第一层 for 语句循环3次,第二层for语句循环5次。当第二层 for语句循环至第4次时,强行用 break 中断循环。输出程序执行时外层循环和内层循环各循环了多少次。

二、第四章流程控制_第25张图片

 二、第四章流程控制_第26张图片

 

2、continue语句

continue 语句是针对 break 语句的补充。continu 不是立即跳出循环体,而是跳过本次循环,回到 

循环的条件测试部分,重新开始执行循环。在 for 循现环语句中遇到 continue后,首先执行循环的增量部分,然后进行条件测试。在 while 和 do...while 循环中,continue 语句使控制直接回到条件测试部分。

输出 1~20 的奇数


创建ContinueTest类,编写一个for循环从1循环至20,如果当前前循环的次数为偶数,则使用 continue语句跳过循环。

二、第四章流程控制_第27张图片

 二、第四章流程控制_第28张图片

 二、第四章流程控制_第29张图片

二、第四章流程控制_第30张图片

 流程:

从表达式1开始

表达式2判断条件

如果为真->while判断条件

如果为真->do while的循环块

for表达式'2'循环直到为假

do while的判断条件

如果为真则继续循环do while里的for循环

如果为假

判断while条件

如果为真则执行do while的循环块

如果为假-则执行for表达式3

for表达式2的判断

如果为真则继续while循环

如果为假则结束 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(java)