《流程控制和数组.ppt》由会员分享,可在线阅读,更多相关《流程控制和数组.ppt(36页珍藏版)》请在三一办公上搜索。
1、第3章 流程控制和数组,第3章 流程控制和数组,条件语句循环语句流程控制关键字,条件语句循环语句,循环语句,掌握Java语言的流程控制的使用,第3章 流程控制和数组,3.1 流程控制,3.1.1 条件语句,如果圆括号中的条件成立,就执行statement语句指定的操作,条件不成立就接着执行statement之后的语句。条件必须放在圆括号内。,Java中的条件语句格式如下:,if(condition)statement1;statement2;,if语句,if 单独使用,第3章 流程控制和数组,例如:如果a大于b,将a的值赋为30。,if(ab)a=30;,3.1 流程控制,3.1.1 条件语句
2、,if语句,if 单独使用,if语句流程图:,第3章 流程控制和数组,3.1 流程控制,3.1.1 条件语句,if语句,if 单独使用,【案例1】当游戏开始的时候,需要设置人物的位置和生命值。,int exp=0;/玩家生命值int x=0;/玩家x位置坐标int y=0;/玩家y位置坐标boolean begin=true;/游戏开始的标志量(游戏开始之前 exp=+exp+x=+x+y=+y);if(begin=true)x=10;y=10;exp=100;(游戏开始之后 exp=+exp+x=+x+y=+y);,第3章 流程控制和数组,3.1 流程控制,3.1.1 条件语句,if语句,i
3、f 单独使用,在上面的代码中,对于游戏是否开始的判断是通过if括号内的begin变量来判断,当begin变量为真的时候,代表游戏开始。游戏开始后,才能为玩家的位置和生命值进行赋值。上面代码执行后,会在控制台上打印出如下内容:,游戏开始之前 exp=0 x=0 y=0游戏开始之后 exp=100 x=10 y=10,第3章 流程控制和数组,3.1 流程控制,3.1.1 条件语句,if语句,if else,if-else语句在条件表达式的值为false时执行else语句。如果if表达式的值为true,那么else块的代码就不执行了。,if(condition)/条件成立时,执行的命令Stateme
4、nt1;Statement2;.else/否则要执行的命令Statement3;Statement4.,第3章 流程控制和数组,3.1 流程控制,3.1.1 条件语句,if语句,if else,例如:,if(a b)a=30;/如果a大于b,将a的值赋为30。elsea=20;/否则,将a的值赋为20,if-else语句运行流程图如下:,第3章 流程控制和数组,3.1 流程控制,3.1.1 条件语句,if语句,if else,【案例】在游戏中,游戏将结束的条件通常都是玩家的生命值为0,则游戏结束。那么这段文字用代码如何描述呢?下面的案例就将这段条件判断的语言描述转化为代码。,int exp=1
5、00;System.out.println(exp=+exp);if(exp 0)(游戏进行中);else(游戏结束);exp-=110;(-);/(接下一页),第3章 流程控制和数组,/(接上一页)System.out.println(exp变换之后 exp=+exp);if(exp 0)(游戏进行中);else(游戏结束);,3.1 流程控制,3.1.1 条件语句,if语句,if else,上面代码中,if条件用来判断exp值,如果exp的值大于0的情况,则游戏进行,否则游戏将结束。当exp的值未做改变的时候,程序输出“游戏进行中”,当exp的值被改变后,则程序输出的是“游戏结束”。,第3
6、章 流程控制和数组,3.1 流程控制,3.1.1 条件语句,if语句,if else,程序输出结果如下:,exp=100游戏进行中-exp变换之后 exp=-10游戏结束,第3章 流程控制和数组,3.1 流程控制,3.1.1 条件语句,if语句,if else if else,当if后面的条件不满足时,判断else if后面括号里的新条件是否满足,如果满足即执行此内的语句,如果不满足则继续判断下面的else if,如果不再有else if,则执行else内的语句。,if(condition1)/条件1成立时,执行的命令Statement1;else if(condition2)/条件2成立时,
7、执行的命令Statement2;else/否则要执行的命令Statement5;,第3章 流程控制和数组,3.1 流程控制,3.1.1 条件语句,if语句,if else if else,案例:,if(a 40)b=10;else if(a30)b=20;else if(a20)b=30;else b=40;,第3章 流程控制和数组,3.1 流程控制,3.1.1 条件语句,if语句,if else if else,if-else if-运行流程图如下:,false,第3章 流程控制和数组,3.1 流程控制,3.1.1 条件语句,if语句,if else if else,【案例3-7】在一个游戏
8、中,当玩家的经验达到某一数值的时候,才可以升级。,public class DemoIfpublic static void main(String args)int exp=500;/声明值if(exp400)(升到4级);(进入下一关);/如果上个条件不满足的情况下,判断else if之后的条件else if(exp200)(升到3级);else if(exp100)(升到2级);,第3章 流程控制和数组,3.1 流程控制,3.1.1 条件语句,if语句,if else if else,/(接上一页)else/都不满足时,执行最后的else(不升级);(执行if后的语句);,在上面代码中,
9、exp代表经验值,当exp每增长100,则升一级,否则不升级。,第3章 流程控制和数组,3.1 流程控制,3.1.1 条件语句,if语句,if else if else,代码执行的结果如下:,升到4级进入下一关执行if后的语句,第3章 流程控制和数组,3.1 流程控制,3.1.1 条件语句,switch语句,switch语句的语法是:,switch(expression)case value1:statement1;break;case value2:statement2;break;case valueN:statemendN;break;default:defaultStatement;,
10、第3章 流程控制和数组,3.1 流程控制,3.1.1 条件语句,switch语句,例如:,int i=1;switch(i)case 1:System.out.println(one);break;case 2:System.out.println(two”);break;default:System.out.println(Default);,第3章 流程控制和数组,3.1 流程控制,3.1.1 条件语句,switch语句,上例代码中,根据i的值会执行不同的case语句,如果a的值为1,打印结果为“one”;如果a的值为2,打印结果为“two”;i为其他值时,都会打印“Default”。sw
11、itch语句后的表达式的值必须是特定类型的。只可以使用byte型、short型、char型或int型,不能是float型,double型,boolean型,甚至long型。case子句中的值valueN必须是常量,而且所有case子句中的值应该是不同的。最后的default子句是可选的。switch将控制传给语句标志case后面的值与表达式的值相同的第一个语句,否则switch将控制传给含有default标志的语句。如果没有default标志,控制将被传给switch块后面的第一个语句。另外,在同一个switch块中不能有两个case标志使用相同的值。,第3章 流程控制和数组,3.1 流程控制
12、,3.1.1 条件语句,switch和if-else if在某些情况下可以互换,比如当做为判断条件的变量是byte型、short型、char型或int型,并且判断的值都是定值的时候,才可以互换。如果该变量是一个取值范围,那就只能使用if-else if来做判断。,switch经常使用break来结束switch的执行。只要值与表达式匹配,程序就从这个点开始一直执行下去。所以后面的语句全部会被执行。break语句不是必须的,但不写尽管语法没错,可能会出现某些逻辑的错误。,第3章 流程控制和数组,3.1 流程控制,3.1.2 循环语句,while语句通过判断循环条件的值来决定是否继续循环。如果值为
13、true,则重复执行判断条件后的语句;执行完判断条件后的语句,会再次返回,对循环条件进行判断,直到变量或表达式为false时,就跳过while语句,开始执行while后语句。,while循环的语法是:,initialization/初始化条件while(termination)/循环条件body;/循环体iteration;/迭代,变更循环条件,当表达式termination为true时,执行中的语句,执行完iteration后,再次返回termination,对termination进行判断,如果为false,则退出括号。,第3章 流程控制和数组,3.1 流程控制,3.1.2 循环语句,例如
14、:,int i=0;while(i 5)System.out.println(i);i+,首先判断i值是否小于5,如满足则打印i的值,并把i值递增1。之后再次判断i值是否小于5,如此循环执行。当不满足时,退出while语句块。,第3章 流程控制和数组,3.1 流程控制,3.1.2 循环语句,上例执行流程图如下:,第3章 流程控制和数组,3.1 流程控制,3.1.2 循环语句,while循环首先测试循环条件,循环体中的代码可能永远不会执行。如果要确保循环体至少执行1次,应该把测试条件放到最后,可以使用dowhile循环实现,do-while循环的语法是:,initialization/初始化条件
15、do body;/循环体iteration;/迭代,变更循环条件 while(termination);/循环条件,dowhile语句先执行循环体,即执行body和iteration,然后才判断循环条件,接着再执行循环体,然后再次判断循环条件,如此往复。,第3章 流程控制和数组,3.1 流程控制,3.1.2 循环语句,把while语句中的例子,用dowhile改写,代码如下:,int i=0;doSystem.out.println(i);i+while(i 5);,第3章 流程控制和数组,3.1 流程控制,3.1.2 循环语句,dowhile执行流程图所示:,第3章 流程控制和数组,3.1
16、流程控制,3.1.2 循环语句,【案例3-12】用do循环来求0100的整数的和。,int amount=0;/用来存放总数的变量int i=0;/定义一个循环控制变量doamount=amount+i;i+;while(i=100);/打印出总和(+amount);,注意:使用dowhile时,不要忘记最后while语句结尾处的分号。,第3章 流程控制和数组,3.1 流程控制,3.1.2 循环语句,for语句是一个经常使用的循环结构,它使用计数器或者类似的变量控制循环,并且在每次循环后修改计数器或类似的变量的值,其语法结构如下:,for循环的语法是:,for(initialization;t
17、ermination;iteration)body;/循环体/*initialization/初始化条件 termination/循环条件iteration/迭代,变更循环条件*/,第3章 流程控制和数组,3.1 流程控制,3.1.2 循环语句,for循环首先运行初始化条件,然后判断循环条件。如果循环条件的值为true,循环体语句被执行,然后循环。再次判断循环条件是否满足。如此往复,直到循环条件的值为false,for循环执行结束。例如:,for(int i=0;i 5;i+)System.out.println(i);,注:Java编程语言允许在for循环结构中使用逗号作为分隔符。例如,fo
18、r(i=0,j=0;j10;i+,j+)是合法的。它将i、j值初始化为零,并在每执行完一次循环体后,增加一次它们的值。,第3章 流程控制和数组,3.1 流程控制,3.1.3 流程控制关键字,1break,break语句用于终止循环的子语句块和switch语句。break语句将会使程序跳出当前循环。break在循环中通常用在非循环起始处的跳出或者循环中的多处跳出。,boolean test=true;int i=0;while(test)i+;if(i=10)break;,执行这段程序时,尽管while条件表达式始终为真,全循环只运行10次。,第3章 流程控制和数组,3.1 流程控制,3.1.3
19、 流程控制关键字,2continue,continue语句只出现在循环语句中,其作用是使程序跳过当前循环,转移到条件判断处进行下一次判断。例如:,for(int i=0;i 3;i+)if(i=1)continue;System.out.println(i);,上例运行结果,会打印出0、2,而i=1的那次循环,被continue语句跳过了。,第3章 流程控制和数组,本课小结,本课讲解了流程控制的相关知识。主要掌握if、switch分支语句;while、dowhile、for循环语句的应用,第3章 流程控制和数组,小测验,单选题1.以下描述正确的是()A.if语句可以嵌套使用,if-else语句也可以嵌套使用B.if语句不可以嵌套使用,只有if-else语句才可以嵌套使用C.if语句可以嵌套使用,if-else语句不可以嵌套使用D.无论if语句还是if-else语句均不可以嵌套使用,多选题2.下列利用for语句,实现了10次的循环的有()A.for(int i=1;i10;i+)B.for(int i=1;i=10;i+)C.for(int i=0;i10;i+)D.for(int i=0;i=10i+),A,BC,第3章 流程控制和数组,课后作业,【作业1】用if语句实现求出三个数中的最大值。,【作业2】用while语句实现求出100以内奇数的和。,第3章 流程控制和数组,
链接地址:https://www.31ppt.com/p-5995566.html