1、本章涉及内容目录41 内容概述 - 1 -4.2 程序的三种基本结构 .- 1 -421 顺序结构程序 - 1 -422 选择结构程序 - 2 -423 循环结构程序 - 2 -4.3 条件语句 .- 3 -431 if 语句 - 3 -432 条件语句的使用 - 4 -44 循环语句 - 5 -4.4.2 构造循环结构的 dowhile 语句 - 6 -4.4.3 for 循环语句 .- 7 -444 三种循环语句的比较 - 8 -45 switch 开关语句 - 8 -46 转移语句 - 9 -461 break 语句 - 10 -4.6.2 coutinue 语句 - 10 -4.6.3
2、 return 语句 .- 11 -本章小结 .- 12 - 1 -第四章 程序流程控制流程控制语句是用来控制程序的流程或走向的。流程控制对于任何一门编程语言来说都是至关重要的,它提供了控制程序执行步骤的基本手段,是程序的核心部分。虽然我们在书写程序时只能一句接一句地顺序书写,但实际总是存在多种情况,需要解决此类问题在执行时可以跳过某些语句或反复执行某些语句,这类语句便是流程控制语句。Java 提供了许多流程控制表达式,编程人员可以利用这些表达式构造出功能完整的程序。本章将讨论 Java 语言的流程控制。41 内容概述Java 提供了较为丰富的流程控制功能,这些流程控制语句几乎完全是 C 和
3、C+的翻版,Java 只作了很小的改动。事实上,流程控制和现实生活中的许多决策模式是一致的。我们经常需要依照不同的条件决定采用相应的对策,对应到程序设计中,就需要使用条件语句、开关语句或转移语句;具体来说,Java 的流程控制是通过如下语句来实现的:条件语句:if;循环语句:while,do-while,for;开关语句:switch,case,break;转移语句:break,continue,label;返回语句:return;4.2 程序的三种基本结构421 顺序结构程序顺序结构程序中语句的执行次序是按照语句的书写顺序一句接一句执行的,如图 4.1a所示。语句 1语句 2语句 3开 始结
4、 束- 2 -图 4.1a 顺序结构422 选择结构程序选择结构也称为分支结构。在选择结构程序中,尽管程序仍然是一句接一句顺序书写的,但在执行程序时,根据选择判定条件的“真” 、 “假” ,只执行程序中的一部分语句,而不执行程序中的另外一部分语句,如图 4.1b 所示。图 4.1b 选择结构423 循环结构程序循环结构也称为重复结构。在循环结构程序中,位于循环体中的语句可以根据循环条件反复执行多次。如图 4.1c 所示。语句 1布尔表达式语句 2(1) 语句 2(2)语句 3T F语句 1布尔表达式语句 2语句 3TF- 3 -图 4.1c 循环结构4.3 条件语句条件语句是程序设计语言中最基
5、本的流程控制语句,又称分支语句,几乎任何一门程序设计语言的条件语句都用到了 if 关键字,因而条件语句又被称作 if 语句。条件语句分为简单条件语句和复合条件语句两种,如果条件语句的分支中又包括了条件语句,即称为复合条件语句,或嵌套条件语句;否则称为简单条件语句。431 if 语句一、Java 语言的条件语句为 if-else,基本形式如下if (布尔表达式)语句块 1else语句块 2该语句的执行次序是:当布尔表达式为“真”时执行“语句块 1”中的语句,否则执行“语句块 2”中的语句。使用 ifelse 语句可构成双分支选择结构程序。例如:if (a由此可以看出,方法可以返回值,也可以不返回
6、值。方法是否需要返回值,以及返回值的数据类型,均取决于方法声明。除类的构造方法外,所有方法均有一个返回类型,这就是返回值的数据类型,如果返回类型为 void,表明该方法不返回数据。本章小结本章我们介绍了 Java 语言的流程控制。对于程序员来说,Java 语言并不显陌生,它们的流程控制几乎和 C/C+完全一致,只不过少了 GOTO 语句。但实际上,Java 和 C/C+在流程控制上还是有其他一些细微的差别。另外,Java 和 C/C+指针和类型转换上也存在很大差别。Java 把安全性提到了一个较高的地位,为此它不支持指针。本章练习1以下程序输出的结果是:public class IfTest
7、public static void main(String args) int x = 3;int y = 1;if (x = y)System.out.println(“Not equal“);elseSystem.out.println(“Equal“); 2以下程序输出的结果是:public class Test - 13 -public static void main(String args) int i = 1;while (i) if (i= =5) break; +i; 3给出如下程序: switch (i) default:System.out.println(“Hello
8、“);为 i 选择两个合法的参数类型 ? A. char;B. byte;C. float;D. double;E. Object4以下程序输出结果是:class Test public static void main(String args) int a=10;System.out.println(a+);System.out.println(a+);System.out.println(a);System.out.println(+a);5以下程序输出结果是:class Test public static void main(String args) int i = 1, j = 10
9、 ;do if (i+ -j) continue; while (i -j) break tp;break tp;System.out.println(“i=“ +i “,j =“+j);13以下程序的输出结果是:- 16 -public class TestR public static void main( String args ) int x = 1, y =6;while (y-) x+;System.out.println(“x =“ + x + “y =“ +y);14以下程序的输出结果是:public class TestR public static void main( S
10、tring args ) int i = 0;while (true) if(i=4) break;+i;System.out.println(“i=“+i); 15以下程序的输出结果是:public class TestR public static void main( String args ) int i = 0, j = 1;if (i+ = 1) System.out.println(“i = “ + i + “, j = “ + j); 第四章练习答案1、 答案:编译不通过。if 语句的参数为 boolean 型数据。2、 答案是 :编译不通过。原因是 while 循环的参数为
11、boolean 型数据或 boolean 型表达式。而程序中给的参数是 int 类型。- 17 -3、答案是:A,B。4、 答案是:10,11,12,13。+符号在属性前的运算原则是本次不加下次加,+符号在属性前的运算原则是本次就加。5、答案是:5,6 。do-while 循环的特点是至少运行一次。注意+和符号的位置。6、 参考答案:public class PrimeNumberpublic static void main(String args) /因为是已知循环次数,所以采用 for 循环for(int i=200;i300;i+)for(int j=2;ji;j+)if(i%j=0)
12、break;if(j=i-1)System.out.println(i);7、答案是:8。注意 break 的运用。8、 答案是 :024。注意步进操作。9、 答案是:0123456789。注意 continue 的应用。10、答案是:编译不通过。注意 case 的语法要求,以及 default 的语法要求。11、答案是:one two three two three done.注意 switch 与 for 的组合使用,本题的另外考查了 case 中没有 break 的处理过程,由于当 i 为 1 时,case 中均没有 break 所以程序依次输出 onetwothree。12、答案是:编译不通过。注意标签的应用。13、答案是:编译不通过。While 语句的参数要求为 boolean 类型的数据或者是 boolean类型的表达式,而 y 是 int 类型的数据,所以导致编译不通过。14、答案是:i=4。注意+符号的位置。15、答案是:i=1,j=1。本题考查运算符与流程控制的综合应用