《3章程序控制语句.ppt》由会员分享,可在线阅读,更多相关《3章程序控制语句.ppt(30页珍藏版)》请在三一文库上搜索。
1、第3章 程序控制语句,本章要点,目标 掌握:if语句。 掌握:switch语句和循环语句。 理解:break、 continue和 return的用法。 重点 掌握:能熟练使用三种常用的控制语句。 难点 理解:循环语句的执行过程。,3.1 选择语句,程序控制语句用于控制程序中各语句的执行顺序。 Java提供的流程控制语句有选择语句、循环语句、跳转语句等。 3.2.1 简单if条件语句 简单if条件语句只在条件为真时执行,如图2-1 if 语句流程图所示其语法如下: if(条件) 语句(块); ,3.1 选择语句,若布尔表达式的值为真,则执行块内语句。 if (score=60) system.
2、out.println(“你及格了”); if (score60) system.out.println(“你没有及格”); 注意: 在if子句末不能加分号(;) 在if语句中,布尔表达式总应该用括号括住。 如果块中只有一条语句,花括号可以省略。但建议使用花括号以避免编程错误。,3.1 选择语句,3.1.2 if-else条件语句 当指定条件为真时简单if语句执行一个操作,当条件为假时什么也不做。那么,如果需要在条件为假时选择一个操作,则可以使用if-else语句来指定不同的操作,如图2-2 if-else 语句流程图所示。下面是这种语句的语法: if(布尔表达式) 布尔表达式为真时执行的语句
3、1(块); else 布尔表达式为假时执行的语句2(块); ,3.1 选择语句,若布尔表达式计算为真,执行语句1(块)(true时执行),否则,执行语句2(块)(false时执行)。 if(score=60) System.out.println(“你及格了”); else System.out.println(“你没有及格”); ,3.1 选择语句,3.1.3 if嵌套语句 if或ifelse语句中的语句可以是任意合法的Java语句包括其他if或if-else语句。内层的if语句称为嵌套在外层if语句中。内层if语句又可以包含另一个if语句,事实上,嵌套的深度没有限制。 if(Score60
4、) System.out.println(“不及格“); else if(Score80) System.out.println(“及格“); else if(Score90) System.out.println(“良好“); else System.out.println(“优秀:);,3.1 选择语句,前面的if语句与下述语句等价: if(score60) System.out.println(“不及格“); else if (score80) System.out.println(“及格“); else if (score90) System.out.println(“良好“); el
5、se System.out.println(“优秀“); 事实上,这是多重选择if语句比较好的书写风格。这个风格可以避免深层缩进,并使程序容易阅读。 注意:else子句与同一块中离得最近的if子句相匹配。,3.1 选择语句,3.1.4 switch语句 switch语句根据表达式的结果来执行多个可能操作中的一个,它的语法形式如下: switch (表达式) case 常量1: 语句1; break; case 常量2: 语句2 ; break; case 常量n: 语句n ; break; default: 缺省处理语句; switch语句中的每个“case 常量:”称为一个case子句,代表
6、一个case分支的入口。switch语句的流程图如图2-3所示。,图2-3 switch语句流程图,3.1 选择语句,在Java中,可以用switch语句对操作进行分组,例如: switch(Score) case 1: System.out.println (“优秀“); break; case 2: System.out.println (“优良“); break; case 3: System.out.println (“良好“); break; case 4: System.out.println (“及格“); break; case 5: System.out.println (“
7、不及格“); break; default: switch要检查变量Score的值,它的每个值是特定值用“case value:”来表示或者是使用缺省从句用“default:”来表示。 注意程序中使用了关键字break,它的作用就是在得到与某个特定值相匹配之后执行代码完成的时候跳出switch条件。,Java的3种循环语句有while、do-while和for循环语句。 3.2.1 while循环语句 它的执行过程如图2-4所示,其的语法如下: while (条件) 循环体 说明: 循环条件是一个布尔表达式,它必须放在括号中。 在循环体执行前一定先计算循环条件, 若条件为真,执行循环体, 若条
8、件为假,整个循环中断并且程序控制转移到while循环后的语句。,3.2 循环语句,3.2 循环语句,例如用while循环打印“Welcome !”一百次。 int i=0; while (i100) System.out.println(“Welcome!”); i+; i的初值为0。循环检查(i100)是否为真,若真,则执行循环体,打印消息“Welcome!”并使i加1。这将重复执行,直到(i100)为止。若(i100)变为假,循环中断并执行循环体之后的第一条语句。,3.2 循环语句,3.2.2 do-while循环语句 do循环其实就是while循环的变体。它的执行过程如图2-5所示,其的
9、语法如下: do /循环体; while(条件); 注意: 在do循环中while条件判断之后需要添加一个分号。,3.2 循环语句,do-while的循环流程是和while循环不一样的,二者的主要差别在于循环条件和循环体的计算顺序不同。例如,可将例3-1改写如下: public class TestDo public static void main(String args) int data; int sum=0; do data=ReadInt(); sum+=data; while (data!=0); System.out.println(“The sum is”+sum); ,3.2
10、 循环语句,【例3-1】源程序TestWhile.java,读入一系列整数并计算其和,输入0则表示输入结束。 class TestWhile public static void main(String args)throws java.io.IOException int i; int sum=0; System.out.println(“请输入一个整数,0代表结束“); do System.out.print(“你输入的是:“); do i=System.in.read(); while(i=n|i=r); i=i-0; sum=sum+i; while(i!=0); System.out
11、.println(“sum=“+sum); ,3.2 循环语句,3.2.3 for循环语句 for循环语法如下: for(循环变量初始化;循环条件;调整语句) 循环体; for循环语句以关键字for开始,然后是由括号括住的三个控制元素,循环体括在大括号内。控制元素由分号分开,控制循环体的执行次数和终止条件。,3.2 循环语句,下面的for循环可以打印“Welcome!“100次。 int i; for (i=0;i100;i+) System.out.println(“Welcome!“); 第一个元素为i=0,初始化循环变量。循环变量跟踪循环体的执行次数,调整语句修改它的值。 第二个元素为i
12、100,是布尔表达式,用作循环条件。 第三个元素是调整控制变量的语句,循环变量的值最终必须使循环条件变为假。 另外,循环变量也可以在for循环中进行说明和初始化。上例还可写成下列语句: for (int i=0; i100; i+) System.out.println(“Welcome!“); ,3.2 循环语句,例3-2源程序TestSum.java,使用for循环计算从1到100的数列的和。 /本程序利用for循环计算1到100的和 public class TestSum public static void main(String args) int sum=0; for (int
13、i=1;i=100;i+) sum+=i; System.out.println(“The sum is “+sum); ,3.2 循环语句,运行结果 程序分析 第6句组成的for循环,变量i从1开始,每次增加1,当i大于100时循环终止。,3.2 循环语句,例3-3:源程序TestMulTable.java,使用嵌套的for循环打印九九乘法表。 /本程序打印九九乘法表 public class TestMulTable public static void main(String args) System.out.print(“ “); for (int j=1;j=9;j+) System
14、.out.print(“ “+j); System.out.println(“ “); for (int i=1;i=9;i+) System.out.print(i+“ “); for ( j=1;j=i; j+) if (i*j10) System.out.print(“ “+i*j); else System.out.print(“ “+i*j); System.out.println(); ,3.2 循环语句,运行结果 程序分析 第56句组成的第一个循环显示数1到9; 第8句19句是一个嵌套的for循环,对每个外循环的循环变量i,内循环的循环变量j都要逐个取1,2,.,9,并显示出i*
15、j的值; 第1316句的if语句使结果右对齐。,3.3 与程序有关的其他语句,3.3.1 break语句 break有两种形式break和 break 标号。 一种是不带语句标号的break,用于立刻终止包含它的最内层循环。 另一种是带标号的break,用于多重循环中,跳出它所指定的块,并从紧跟该块的第一条语句处执行。 例如:下面break语句中断内层循环并把控制立即转移到外层循环后的语句。 outer: for(int i=1; i50) break outer; System.out.println(i*j); 如果把上述语句中的break outer换成break,则break语句终止内
16、层循环,仍然留在外层循环中。如果想退出外循环,就要使用带标号的。,3.3 与程序有关的其他语句,例3-4:源程序TestBreak.java,测试break语句对程序结果的影响。 /本程序测试break语句 public class TestBreak public static void main(String args) int sum=0; int item=0; while(item=6) break; System.out.println(“The sum is “+sum); ,3.3 与程序有关的其他语句,运行结果 程序分析 第611句的while循环中,如果不用9行的if语句,
17、本程序计算从1到5的和。如果有了if语句,总和大于等于6时循环终止。,3.3 与程序有关的其他语句,3.3.2 continue语句 continue语句用来结束本次循环,跳过循环体中下面尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。 例3-5源程序“TestContinue.java”,测试continue语句。 /本程序测试continue语句 public class TestContinue public static void main(String args) int sum=0; int i=0; while (i5) i+; if(i= =2) continue;
18、 sum+=i; System.out.println(“The sum is “+sum); ,3.3 与程序有关的其他语句,运行结果 程序分析 第611句的while循环中,continue语句终止当前迭代,当i变为2时不再执行循环体的剩余语句,即不加到sum中。如果没有if语句,所有的项都加到sum中,包括i=2。,3.3 与程序有关的其他语句,3.3.3 return语句 return语句能够从一个方法返回,把控制权交给其他语句。 return语句有两种格式: return expression return return语句用在方法体的中间会产生编译错误,一般放在某些嵌套语句中使用。
19、,3.3 与程序有关的其他语句,例3-5源程序“TestReturn.java”,测试return语句。 class returnDemo int i; void guess(int j) i=j; System.out.println(“it will be executed“); if(i4) return; System.out.println(“it wont be executed“); class Return public static void main(String args) returnDemo test=new returnDemo(); test.guess(5); ,3.3 与程序有关的其他语句,运行结果 程序分析 当在main()函数中调用guess(5)使得执行了if语句在此就返回了,执行不到returnDemo类的第7句,所以只输出这一句。,
链接地址:https://www.31doc.com/p-2151652.html