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

Slides:



Advertisements
Similar presentations
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
Advertisements

JAVA 编 程 技 术 主编 贾振华 2010年1月.
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
迴圈 迴圈基本觀念 while迴圈 do 迴圈 for迴圈 巢狀迴圈 迴圈設計注意事項 其他控制指令 迴圈與選擇的組合.
Java程序设计教程 第一讲 Java概述.
第六章 循环控制.
四資二甲 第三週作業 物件導向程式設計.
C#程序设计案例教程 第3章 程 序 结 构.
南京理工大学 第2章 Java基本语法 本章我们将学习Java编程语言的基本语法,包括变量、操作符、表达式、语句、字符串、数组、控制流以及如何使用帮助文档。 使用下面的编程框架: public class Test{ public static void main(String []args){ //以下添加测试代码.
第 5 章 流程控制 (一): 條件分支.
第二章 JAVA语言基础.
Ch07 介面與多重繼承 物件導向程式設計(II).
数学建模与MATLAB 第五讲:循环结构(1) 2017/9/12.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
第三章 控制结构.
程式設計實作.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
C#程序设计基础 $5 流程控制.
控制流程 邏輯判斷 迴圈控制.
Class 2 流程控制-選擇敘述與迴圈.
第二章 C# 基础知识.
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
流程控制結構 4-1 流程控制與UML活動圖 4-2 程式區塊與主控台基本輸入 4-3 條件控制敘述 4-4 迴圈控制敘述 4-5 巢狀迴圈
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
第3章 語法入門 第一個Java程式 文字模式下與程式互動 資料、運算 流程控制.
程式設計實作.
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
程式撰寫流程.
走进编程 程序的顺序结构(二).
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
實作輔導 3 日期: 4/14(星期六) 09:10~12:00、13:10~16:00
第3章 选择结构与循环结构 王德俊 上海交通大学继续教育学院.
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
第二章 Java语言基础.
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
第七章 操作符重载 胡昊 南京大学计算机系软件所.
第三章 C# 基础知识.
2.1 Java语法基础 2.2 Java 流程控制 2.3 数组 2.4 字符串
第4章 PHP流程控制语句.
Week 2: 程式設計概念與 演算法的效能評估
《JAVA程序设计》 语音答疑 辅导老师:高旻.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
第二章Java基本程序设计.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
Java软件设计基础 3. 流程控制.
第二章 Java基本语法 讲师:复凡.
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
第4章 Excel电子表格制作软件 4.4 函数(一).
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
第九节 赋值运算符和赋值表达式.
College of Computer Science & Technology
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
ASP.NET实用教程 清华大学出版社 第4章 C#编程语言 教学目标 教学重点 教学过程 2019年5月5日.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
第二章 Java基本语法 讲师:复凡.
第二章 Java基本语法 讲师:复凡.
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
第2章 Java语言基础.
迴圈(重複性結構) for while do while.
判斷(選擇性敘述) if if else else if 條件運算子.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第二章 Java基础语法 北京传智播客教育
考察点:switch\while\for System.in\Scanner char vs int
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
Summary
Presentation transcript:

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

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

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

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方法 类体

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

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

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

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

例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);

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

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

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

例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);}

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

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

例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+" 年不是闰年");

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+" 年不是闰年");

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

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

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

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

例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:

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

例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+"℃ 太热了"); }

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

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

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

例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]); }

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

例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); }

输出结果如图所示 :

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

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

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':

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

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

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

例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+...+100 ="+sum);

输出结果:

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

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

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--; }

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

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

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

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+"时循环结束");

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

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

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("结束两重循环");

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

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

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); } }

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

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

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);

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

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

class CircleArea { final static double PI=3.14159; 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);

习 题 1.分析下面的源程序的结构和运行结果。 class CircleArea { 习 题 1.分析下面的源程序的结构和运行结果。 class CircleArea { final static double PI=3.14159; 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);

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

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!+…。

7.编写程序,输出以下数据: 8.编写程序,列出乘法口诀。 9.编写程序,输出1~100间的所有奇数。 N 10*N 100*N 1000*N 1 10 100 1000 2 20 200 2000 3 30 300 3000 4 40 400 4000 5 50 500 5000 8.编写程序,列出乘法口诀。 9.编写程序,输出1~100间的所有奇数。

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);

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