1、第第3 3章章 程序的控制语句程序的控制语句知识点回顾知识点回顾u标识符和保留字标识符和保留字uJAVAJAVA数据类型数据类型u运算符与表达式运算符与表达式2本章目标本章目标u程序的控制语句程序的控制语句l选择语句l迭代语句l跳转语句3程序控制语句程序控制语句u使用控制语句来产生执行流,从而完成程序状态的改变使用控制语句来产生执行流,从而完成程序状态的改变u程序控制语句分类程序控制语句分类l选择、迭代、跳转4选择语句选择语句u选择语句功能选择语句功能 允许程序根据表达式的结果或变量的状态选择不同的执行路径u选择语句分类:选择语句分类:ifif语句、语句、switchswitch语句语句5语法
2、格式一:if(条件语句)语句或语句块1;语法格式二:if(条件语句)语句或语句块1;else 语句或语句块2;选择语句选择语句-if-if语句语句语法格式三:if(条件语句1)语句块1;else if(条件语句2)语句块2;else if(条件语句n)语句块n;else语句块n+1;6publicpublic classclass IfDemopublicpublic staticstatic voidvoid main(String args)booleanboolean bl=truetrue;ifif(bl)System.out.println(true);elseelseSystem.
3、out.println(false);思考:是否还有更好的写法?7publicpublic classclass IfElseDemo publicpublic staticstatic voidvoid main(String args)intint state=3;ifif(state=1)System.out.println(1.);elseelse ifif(state=2)System.out.println(2.);elseelse ifif(state=3)System.out.println(3.);思考:输出结果8Lab3-1Lab3-1、用、用JavaJava实现一个用户登
4、录程序实现一个用户登录程序1、用户输入用户名和密码,点击确定按钮可以登录2、如果正确则提示登录成功3、否则登录失败,提示错误信息9switch(expr)case const1:statement1;break;case constN:statementN;break;default:statement_dafault;break;选择语句选择语句-switch-switch语句语句10uswitchswitch语句规则语句规则l表达式expr的返回值必须是下述几种类型之一:int,byte,char,short;lcase子句中的值constant 必须是常量,且所有case子句中的值应是不
5、同的;ldefault子句是任选的;lbreak语句用来终止switch语句的执行(在一些特殊情况下,多个不同的case值要执行一组相同的操作,这时可以不用break)。选择语句选择语句-switch-switch语句语句11publicpublic classclass SwitchDemo publicpublic staticstatic voidvoid main(String args)intint state=2;switchswitch(state)casecase 1:System.out.println(1.);casecase 2:System.out.println(2.
6、);casecase 3:System.out.println(3.);breakbreak;defaultdefault:System.out.println(default);思考:输出结果?default是否一定执行12输出结果?publicpublic classclass SwitchDemo2publicpublic staticstatic voidvoid main(String args)shortshort state=2;switchswitch(state)casecase 1:casecase 2:casecase 3:System.out.println(“是小于等
7、于3的数.);breakbreak;defaultdefault:System.out.println(大于3的数);13Lab3-2Lab3-2、完成、完成100100分值到分值到5 5分值转换分值转换1、100分值范围:0204060801002、5分值范围:EDCBA14u迭代语句功能迭代语句功能 使程序能够重复执行一条或多条语句u迭代语句的四个组成部分迭代语句的四个组成部分l初始化部分(init_statement)l迭代条件部分(test_exp)l迭代体部分(body_statement)l迭代部分(alter_statement)迭代语句迭代语句15uwhilewhile语句语句
8、 initialization while(termination)body;iteration;注意:termination是boolean类型的expression;当termination为true时,进入while,否则退出while迭代语句迭代语句-while-while语句语句16/打印输出打印输出0到到9的值的值public class WhileDemo1 public static void main(String args)int count=0;/初始化部分while(count10)System.out.println(count.+count);count+;Syst
9、em.out.println(count.+count);输出结果?如果把while(count10)改为while(true)的结果?18int x=3;while(x=3);System.out.println(sfsf);添加;后结果是?不添加;后结果是?19udo-whiledo-while语句语句 initialization do body;iteration;while(termination);注意:无论initialization 为何值时,都会执行一次while;while(termination);后面以”;“结束的迭代语句迭代语句-do while-do while语句
10、语句20输出结果为?publicpublic classclass DoWhileDemo1publicpublic staticstatic voidvoid main(String args)int count=0;dodoSystem.out.println(count=+count);count+;whilewhile(count10);21publicpublic classclass DoWhileDemo2 public public staticstatic voidvoid main(String args)int count=0;do do System.out.print
11、ln(count.+count);count+;whilewhile(count=10);输出结果?22Lab3-3Lab3-3 修改Lab3-1登录程序,如果输入用户名或密码错误,使其可以反复输入,直到正确为止。23uforfor语句语句lfor语句执行时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行迭代体中的语句,最后执行迭代部分。完成一次迭代后,重新判断终止条件。l 初始化、终止以及迭代部分都可以为空语句(但分号不能省),三者均为空的时候,相当于一个无限迭代(dead loop)。l 在初始化部分和迭代部分可以使用逗号语句,来进行多个操作。逗号语句是用逗号分隔的语句序列
12、。for(initionalization;termination;iteration)body;1234迭代语句迭代语句-for-for语句语句24输出结果是?publicpublic classclass ForDemo1 publicpublic staticstatic voidvoid main(String args)for for(intint i=0;i15;i+)System.out.println(i.+i);25输出结果是?forfor(intint i=0;i+)System.out.println(i.+i);forfor(intint i=0;i10;)System
13、.out.println(i.+i);int i=0;forfor(;)System.out.println(i”);26Lab3-4Lab3-4 打印输出1100之间所有的素数27迭代语句迭代语句-for each-for each循环循环ufor eachfor each循环循环 for(type itr-var:collection)statement block l其中type指定类型,itr-var指定迭代变量名。lType必须与集合中存储的元素类型相同(或相互兼容)28publicpublic classclass ForEachDemo1publicpublic staticst
14、atic voidvoid main(String args)int nums=1,2,3,4,5,6,7,8,9,10;int sum=0;for(int x:nums)System.out.println(“value is:”+x);sum+=x;System.out.println(“1到10的和为:”+sum);输出结果?29跳转语句跳转语句u跳转语句功能跳转语句功能 允许程序以非线性的方式执行u跳转语句分类:跳转语句分类:break语句、continue语句、return语句30跳转语句跳转语句-break-break语句语句ubreakbreak语句语句 l在switch语中,b
15、reak语句用来终止switch语句的执行。l在Java中,可以为每个代码块加一个标号,一个代码块通常是用大括号括起来的一段代码。break语句用于终止某个语句块的执行 break;l它可被用作goto语句的一种“先进”方式 31publicpublic classclass BreakDemo1 publicpublic staticstatic voidvoid main(String args)int i=0;while(i=100)if(i=10)break;i+;System.out.println(“i=”+i);输出结果?32ubreakbreak语句出现在多层嵌套的语句块中时,
16、可以通过标语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块签指明要终止的是哪一层语句块 label1:break label1;跳转语句跳转语句-break-break语句语句33publicpublic classclass BreakDemo2 publicpublic staticstatic voidvoid main(String args)lbla:System.out.println(lbla.);lblb:System.out.println(lblb.);break break lbla;System.out.println(“lbla end”);输出
17、结果?34跳转语句跳转语句-continue-continue语句语句ucontinuecontinue语句语句l用来结束本次迭代,跳过迭代体中下面尚未执行的语句,接着进行终止条件的判断,以决定是否继续迭代。l对于for语句,在进行终止条件的判断前,还要先执行迭代语句。它的格式为:continue;l用continue跳转到标号指明的外层迭代中,格式为:continue outerLable;35Lab3-5Lab3-5 打印输出150之间的前10个数36跳转语句跳转语句-return-return语句语句ureturnreturn语句语句lreturn语句从当前方法中退出,返回到调用该方法的
18、语句处,并从紧跟该语句的下一条语句继续程序的执行。lreturn语句通常用在一个方法体的最后,否则会产生编译错误,除非用在if-else语句中。l语法格式:return expression;或 return;37总结总结u选择语句选择语句 选择语句分类:选择语句分类:ifif语句、语句、switchswitch语句语句u迭代语句迭代语句 迭代语句分类:迭代语句分类:whilewhile语句,语句,do-whiledo-while语句,语句,forfor语句,语句,for-eachfor-each语句语句u跳转语句跳转语句 跳转语句分类:跳转语句分类:breakbreak语句、语句、continuecontinue语句、语句、returnreturn语语句句3839谢谢!谢谢!