Presentation is loading. Please wait.

Presentation is loading. Please wait.

第3章 Java语句及其控制结构 主要任务 了解Java程序的结构,学习使用各种语句结构来控制程序的流程,完成程序的功能任务。

Similar presentations


Presentation on theme: "第3章 Java语句及其控制结构 主要任务 了解Java程序的结构,学习使用各种语句结构来控制程序的流程,完成程序的功能任务。"— Presentation transcript:

1 第3章 Java语句及其控制结构 主要任务 了解Java程序的结构,学习使用各种语句结构来控制程序的流程,完成程序的功能任务。

2 本章主要内容 1.Java程序结构 2.选择语句 3.循环语句 4.跳转语句

3 3.1 Java程序结构 3.1.1 Java程序构成 3.1.2 Java语句

4 3.1.1 Java程序构成 例3.1 一个程序范例,说明Java程序的构成。Java包引入语句类声明语句成员变量循环init方法paint方法类体 import java.applet.Applet; import java.awt.*; public class GetSquare extends Applet { Label label1; public void init() { label1=new Label("前30个数的平方"); add(label1); } public void paint(Graphics g) { for (int i=0; i<30; i++) { int x=i%10, y=i/10; g.drawString(String.valueOf((i+1)* (i+1)), 20+30*x, 50+25*y); Java包引入语句 类声明语句 成员变量 循环 init方法 paint方法 类体

5 以上得出: Java源程序一般包括两部分:Java包引入(如果有的话)部分和类定义部分。 类定义由类声明语句和类体组成。
类声明语句用来说明类的名称、访问权限及类的属性。 类体也由两部分组成:成员变量和成员方法。

6 3.1.2 Java语句 Java语句是Java标识符的集合,由关键字、常量、变量和表达式构成。Java语句分为说明性语句和操作性语句。
import java.applet.Applet; //包引入语句 public class GetSquare extends Applet;//声明类语句

7 1.表达式语句 在表达式后边加上分号“;”,就是一个表达式语句。经常使用的表达式语句有赋值语句和方法调用语句。表达式语句是最简单的语句,它们被顺序执行,完成相应的操作。 例如: int k, i=3, j=4; k=i+j; System.out.println("k="+k); 它们是三个表达式语句。

8 2.复合语句 复合语句也称为块(block)语句,是包含在一对大括号“{}”中的任意语句序列。与其它语句用分号作结束符不同,复合语句右括号“}”后面不需要分号。尽管复合语句含有任意多个语句,但从语法上讲,一个复合语句被看作一个简单语句。

9 例3.2 复合语句示例。 class Block { public static void main(String args[]) {
例3.2 复合语句示例。 class Block { public static void main(String args[]) { int k, i=3, j=4; k=i+j; System.out.println("k="+k); { float f; f=j+4.5F; i++; System.out.println("f="+f); } System.out.println("i="+i);

10 3.2 选择语句 在复合语句中必须逐行执行每条命令。 能否改变程序执行的顺序呢?
3.2 选择语句 在复合语句中必须逐行执行每条命令。 能否改变程序执行的顺序呢? 利用选择语句结构就可以根据条件控制程序流程,改变程序执行的顺序。

11 3.2.1 if语句 if语句的语法格式为: if (条件表达式) s1语句;
这是最简单的单分支结构。条件表达式的值为true,就执行s1语句,否则就忽略s1语句。s1语句可以是复合语句。

12 3.2.2 if…else语句 if语句通常都与else语句配套使用,形成二分支结构。它的语法格式为: if (条件表达式) s1语句;
当条件表达式的值为true,就执行s1语句,忽略else和s2语句;否则,条件表达式的值为false,程序忽略s1语句,执行else后面的s2语句。s1和s2都可以是复合语句。

13 例3.3 比较两个数的大小并按升序输出 class C1 {
例3.3 比较两个数的大小并按升序输出 class C1 { public static void main(String args[]) { double d1=23.4; double d2=35.1; if(d2>=d1) { System.out.println(d1); System.out.println(d2); } else {System.out.println(d2); System.out.println(d1);}

14 比较两个数的大小并按升序输出,运行结果如图所示 :

15 3.2.3 if…else复合结构 对于复杂的情况,可以嵌套使用if…else语句。它的语法格式为: if (条件表达式1) s1语句;

16 例3.4 下面是一个用if...else语句构造多分支程序的例子,判断某一年是否为闰年。
public class LeapYear { public static void main(String args[]) { boolean leap; int year=1989; if ((year%4==0 && year%100!=0) || (year%400==0)) // 方法1 System.out.println(year+" 年是闰年"); else System.out.println(year+" 年不是闰年");

17 year=2000; // 方法2 if (year%4!=0) leap=false; else if (year%100!=0) leap=true; else if (year%400!=0) else if (leap==true) System.out.println(year+" 年是闰年"); System.out.println(year+" 年不是闰年");

18 year=2050; // 方法3 if (year%4==0) { if (year%100==0) { if (year%400==0) leap=true; else leap=false; }

19 if (leap==true) System.out.println(year+" 年是闰年"); else System.out.println(year+" 年不是闰年"); } 结果如图:

20 3.2.4 switch开关语句 开关语句switch的语法格式为: switch (表达式) { case 常量1: 语句1;
break; case 常量2: 语句2; ...... default: 语句n; }

21 使用开关语句时,注意以下几点: ·case后面的常量必须是整数或字符型,而且不能有相同的值; ·通常在每一个case中都应使用break语句提供一个出口,使流程跳出开关语句。否则,在第一个满足条件case后面的所有语句都会被执行,这种情况叫做落空。看下面分别加上和去掉break语句的例子。

22 例3.5 switch语句的使用,有break语句
public class W1 { public static void main(String args[]) { int c=28; switch (c<10?1:c<25?2:c<35?3:4) { case 1: System.out.println(" "+c+"℃ 有点冷"); break; case 2: System.out.println(" "+c+"℃ 正合适"); case 3:

23 System.out.println(" "+c+"℃ 有点热");
break; default: System.out.println(" "+c+"℃ 太热了"); } 结果如图:

24 例3.6 switch语句的使用,无break语句。
public class W2 { public static void main(String args[]) { int c=28; switch (c<10?1:c<25?2:c<35?3:4) { case 1: System.out.println(" "+c+"℃ 有点冷"); case 2: System.out.println(" "+c+"℃ 正合适"); case 3: System.out.println(" "+c+"℃ 有点热"); default: System.out.println(" "+c+"℃ 太热了"); }

25 switch语句的使用,无break语句。输出结果如图所示:

26 循环语句 Java中提供的循环语句有: ☆确定次数循环(for) ☆条件循环(while) ☆先执行后判定循环(do)

27 for循环语句 如果希望程序的一部分内容按固定的次数重复执行,通常可以使用for循环。for循环采用一个计数器控制循环次数,每循环一次计数器就加1,直到完成给定的循环次数为止。

28 例3.7 该程序对一维数组中的每个元素赋值,然后按逆序输出。
例3.7 该程序对一维数组中的每个元素赋值,然后按逆序输出。 public class A2 { public static void main(String args[]) { int I; int a[]=new int[5]; for (i=0; i<5; i++) a[i]=i; for (i=a.length-1; i>=0; i--) System.out.println("a["+i+"] = "+a[i]); }

29 程序对一维数组中的每个元素赋值,然后按逆序输出,结果如图所示:

30 例3.8 按5度的增量打印出一个从摄氏度到华氏度的转换表。
例3.8 按5度的增量打印出一个从摄氏度到华氏度的转换表。 class CtoF { public static void main (String args[]) { int fahr,cels; System.out.println("摄氏度 华氏度"); for (cels=0; cels<=40; cels+=5) { fahr=cels*9/5+32; System.out.println(" "+cels+" "+fahr); }

31 输出结果如图所示 :

32 以上得出: for循环的语法格式为: for (表达式1; 表达式2; 表达式3) 循环体
其中表达式1指出计数器的初值,是一个赋值语句;表达式2指出循环结束条件,是一个逻辑表达式;表达式3指出计数器每次的增量,是一个赋值语句。

33 while循环语句 例3.9 下面这个程序可接受从键盘输入的数字1、2、3,并显示得到的奖品;如果输入其它数字或字符显示“没有奖品给你!”。其中使用了开关语句和while循环语句。输出结果如图所示。

34 import java.io.*; class GetBonus { public static void main(String args[]) throws IOException { char ch; System.out.println("按 1/2/3数字键可得大奖!"); System.out.println("按空格键后回车可退出循环操作."); while ((ch=(char)System.in.read())!=' ') { System.in.skip(2); // 跳过回车键 switch (ch) { case '1':

35 System.out.println("你得到一辆车!");
break; case '2': System.out.println("你得到一台彩电!"); case '3': System.out.println("你得到一台冰箱!"); default: System.out.println("没有奖品给你!"); }

36 以上得出: while循环的语法格式为: while (条件表达式) 循环体
其中while是关键字。每次循环之前都要计算条件表达式,其值为true时,就执行一次循环体中的语句,然后再计算条件表达式,决定是否再次执行循环体中的语句;如果条件表达式的值为false时,就跳出循环体,执行循环体下面的语句。

37 3.3.3 do…while循环语句 do…while循环与while循环相反,是先执行循环体中的语句,再计算while后面的条件表达式,若条件表达式值为false则跳出循环,否则继续下一轮循环。 什么时候使用do…while循环呢?有些情况下,不管条件表达式的值是为true还是false,你都希望把指定的语句至少执行一次,那么就应使用do…while循环,看下面的例子。

38 例3.10 求1+2+…+100之和 class Sum { public static void main(String args[]) { int n=1; int sum=0; do {sum+=n++; } while (n<=100); System.out.println("1+2+ ="+sum);

39 输出结果:

40 以上得出: 归纳do…while循环的语法格式为: do { 循环体 } while (条件表达式);
其中do、while是关键字。程序首先执行do下面的循环体,然后计算while后面条件表达式的值,如果其值为true,则重复执行循环体,否则,就结束循环。

41 循环语句的嵌套 例3.11 分别用while、do和for循环语句实现累计求和。输出结果如图所示。

42 public class Sum1 { public static void main(String args[]) { int n=10, sum=0; while (n>0) { sum=0; for (int i=1; i<=n; i++) sum+=i; System.out.println("前"+n+"个数的总和为:"+sum); n--; }

43 3.3.5 循环语句小结 一个循环一般应包括四部分内容: 1.初始化部分:用来设置循环的一些初始条件,计数器清零等。
循环语句小结 一个循环一般应包括四部分内容: 1.初始化部分:用来设置循环的一些初始条件,计数器清零等。 2.循环体部分:这是反复被执行的一段代码,可以是单语句,也可以是复合语句。 3.迭代部分:这是在当前循环结束,下一次循环开始时执行的语句,常用来使计数器加1或减1。 4.终止部分:通常是一个布尔表达式,每一次循环要对该表达式求值,以验证是否满足循环终止条件。

44 跳转语句 Java支持三种跳转语句: ☆break、 ☆continue ☆return

45 break语句 例3.12 break语句的使用。输出结果如图所示。

46 class B { public static void main(String args[]) { boolean test=true; int i=0; while (test) { i=i+2; System.out.println("i="+i); if (i>=10) break; } System.out.println(" i为"+i+"时循环结束");

47 3.4.2 带标号的break语句 标号是标记程序位置的标识符。break语句只能跳转到循环语句下面的第一条语句上,而带标号的break语句可直接跳转到标号处。 它的语法格式为: 标识符: ... break 标识符;

48 例3.13 带标号的break语句的使用。输出结果如图:

49 class B1 { public static void main(String args[]) throws java.io.IOException { char ch; lab1: // 此处为标号标识符 for (int i=0; i<4; i++) for (int j=0; j<4; j++) { ch=(char)System.in.read(); System.in.skip(2); if (ch=='b') break lab1;//跳到标号标识符处 if (ch=='c') System.out.println("继续"); } System.out.println("结束两重循环");

50 continue语句 continue语句只能用在循环结构中,它跳过循环体中尚未执行的语句,重新开始下一轮循环,从循环体第一个语句开始执行。

51 例3.14 下面的程序可以输出1~9中除6以外所有偶数的平方值。 输出结果如图:
例3.14 下面的程序可以输出1~9中除6以外所有偶数的平方值。 输出结果如图:

52 class C2 { public static void main(String args[]) { for (int i=2;i<=9;i+=2) { if (i==6) continue; System.out.println(i+" 的平方 = "+i*i); } }

53 带标号的continue语句 Java也支持带标号的continue语句,它通常用在嵌套循环的内循环中,你可以用标号标出你想跳到哪一条语句继续重复执行程序。它的语法格式为: 标识符: ... continue 标识符;

54 例3.15 带标号的continue语句的使用。输出结果如图所示:

55 class C3{ public static void main(String args[]) { lab1: for (int i=1; i<=3; i++) for (int j=1; j<=3; j++) { System.out.println("i:"+i+" j:"+j); if (i+j>3) { System.out.println("Continue"); continue lab1; } System.out.println("i="+i+" j="+j);

56 3.4.5 return语句 带参数的return语句格式为: return 表达式
return语句用于方法的返回上,当程序执行到return语句时,终止当前方法的执行,返回到调用这个方法的语句。return语句通常位于一个方法体的最后一行,有带参数和不带参数两种形式,带参数形式的return语句退出该方法并返回一个值。 带参数的return语句格式为: return 表达式

57 例3.17 带参数的return语句的使用。输出结果如图所示 :

58 class CircleArea { final static double PI= ; public static void main(String args[]) { double r1=8.0, r2=5.0; System.out.println("半径为"+r1+"的圆面积="+area(r1)); System.out.println("半径为"+r2+"的圆面积="+area(r2)); } static double area(double r) { return (PI*r*r);

59 习 题 1.分析下面的源程序的结构和运行结果。 class CircleArea {
习 题 1.分析下面的源程序的结构和运行结果。 class CircleArea { final static double PI= ; public static void main(String args[]) { double r1=8.0, r2=5.0; System.out.println("半径为"+r1+"的圆面积="+area(r1)); System.out.println("半径为"+r2+"的圆面积="+area(r2)); } static double area(double r) { return (PI*r*r);

60 2.根据下面的代码: if (x>0) { System.out.println("第一"); } else if (x>-3) { System.out.println("第二"); } else { System.out.println("第三"); } 判断x的取值在什么范围内时将打印字符串“第二”? A. x > 0 B. x > -3 C. x <= -3 D. x <= 0 & x > -3

61 3.编写程序,根据考试成绩的等级打印出百分制分数段。设A为90分以上、B为80分以上、C为70分以上、D为60分以上、E为59分以下。要求在程序中使用开关语句。
4.编写程序,从10个数中找出最大值。 5.编写程序,计算n的阶乘(n!),设n=10。 6.编写程序,计算数学常数e的值,e=1+1/1!+1/2!+1/3!+…。

62 7.编写程序,输出以下数据: 8.编写程序,列出乘法口诀。 9.编写程序,输出1~100间的所有奇数。
N 10*N 100*N 1000*N 8.编写程序,列出乘法口诀。 9.编写程序,输出1~100间的所有奇数。

63 10.以下程序的输出结果是什么? public class Test1 {
public static void main(String args[]) { int y, x=1, total=0; while(x<=10) { y=x*x; System.out.println(y); total+=y; ++x; } System.out.println("total is "+total);

64 11.以下程序的输出结果是什么? public class Test2 {
public static void main(String args[]) { int count=1; while(count<=10) { System.out.println(count%2==1?"****": " "); ++count; }


Download ppt "第3章 Java语句及其控制结构 主要任务 了解Java程序的结构,学习使用各种语句结构来控制程序的流程,完成程序的功能任务。"

Similar presentations


Ads by Google