第3章Java语句及其控制结构共73页文档
第3章 java中的控制语句
1-15
当主程序执行时,如果第一个命令行参数的首 字符分别是数字、小写字母及大写字母时, 系统会显示这个首字符。如果输入的是非数 字或字母,则显示不是数字或字母。输出如 图所示:
1-16
3.3 循环控制语句 1、while循环控制语句
while循环格式:
[初始化条件] while (循环条件) { 语句1; 语句2; 循环主体 语句1; …… 循环条件更改; }
1-18
3、do…while循环控制语句
do…while语句格式:
[初始化部分] do{ 语句1; 语句2; …… 循环条件改变; }while(循环条件判断);
1-19
public class DoWhileDemo01 { public static void main(String[] args) { int x=4,y=5; //声明int型变量x、y,并分别赋给4和5 do //do…while语句 { System.out.println("执行一次!"); } while (x>y); //x>y,返回false } }
1-30
public class ReturnDemo01 { public static void main(String[] args) { for (int i=0;i<=5 ;i++ ){ if (i==3){ System.out.println("结束方法!"); return; } System.out.println("i="+i); } } }
注意:continue语句只能使用在循环语句内部。
1-28
public class ContinueDemo01 { public static void main(String[] args) { for (int i=1;i<=9 ;i++ ){ //外层循环,从1到9循环 if (i==3){ //若i=3,则执行花括号代码 System.out.println("退出循环!"); continue; //中断循环 } System.out.println("i="+i); } } }
第3章 java控制语句
查看结果:WhileTry.java
嵌套while循环 要打印一个如下所示的矩形
@@@@@@@@@@ @@@@@@@@@@ @@@@@@@@@@
内部循环打印列,外部循环打印行 “行慢列快”
查看结果:NestedWhileLoop.java
for循环的流程图
求解表达式1
false
表达式2
true
多重If 结构
查看结果:Coffee.java
If 条件A If 条件B 语句块1 else 语句块2
If 条件A { If 条件B 语句块1 } else 语句块2
注意:else总是与最近的if匹配
测试String之间的等同性
• 使用==比较String在内存中的引用是否相等 • 要测试两个字符串之间是否具有等同性用equals
嵌套for循环 用for循环完成要打印一个如下所示的矩形
@@@@@@@@@@ @@@@@@@@@@ @@@@@@@@@@
进一步:如何实现对打印的行和列的值可随意控 制和修改?
嵌套for循环
查看结果:NestedForLoop.java
do-while 循环的流程图
循环体
true
布尔表达式
false
•while(true) {… }与for (;;){…} 均是无限循环,需要break 语句跳出循环
查看结果:BreakLoop.java和 BreakLoop2.java
5.continue 语句
continue语句只能用在while、for和do循环,用来终止当前这一轮 的循环,重新判断循环条件,决定是否重新开始下一轮的循环。而 不是终止整个循环的执行。
public class ForTry { public static void main(String[ ] args) { int i,sum; sum=0; // 累加器清0 for(i=1;i<=10;i++) { sum+=i; } System.out.println("sum="+sum); } }
Java程序设计第3章 控制语句
while语句的执行过程。
真 循环体
3.4.1 while循环
【例3.10】计算1+2+3+…100值。 设sum表示和值,i表示其中的某一个数。开始时 sum=0; i=1; 可以写出下面的计算过程: 第1 次 sum=sum+i; i++; 第2次 sum=sum+i; i++; 第3次 sum=sum+i; i++; ... sum=sum+i; i++; 第100次 sum=sum+i; i++;
3.3.2 switch语句 break语句不是switch语句中必须的语句。如果将上例中的break语 句去掉,switch语句变成下面形式: switch(grade.charAt(0)) { case 'A':System.out.println("百分成绩为:85~100.");
case 'B':System.out.println("百分成绩为:70~84.");
可以将if或if-else语句作为其他if和if-else的子句,这样就形成了if语句的 嵌套。如下的几种形式: 形式1: if(条件1)
if(条件2)
形式2: if(条件1)
if(条件11) 语句1 else if(条件2) 语句2
语句
3.3.1 if语句 3、嵌套的if语句 形式3:
if(条件1) if(条件11) 语句1
3.1 控制语句 3.2 顺序结构 3.3 选择结构 3.4 循环结构 3.5 选择结构与循环结构的嵌套
3.6 break语句与continue语句 3.7 小结
第3章 Java语言的控制结构2
int player=10; if (player==1) { System.out.println("Player One"); } else { System.out.println("Player Two"); }
《Ja《vJaa程va序程设序计设》计课》程组
项目:学生成绩管理系统(结构化实现) 任务:学生成绩的判断处理
相关知识与技术
➢说明:
(1)若else前面有多个if,else应 该与哪个if相配对。Java规定: else总是与离它最近的那个if相配 对,这一原则称为“就近原则”。
《Ja《vJaa程va序程设序计设》计课》程组
项目:学生成绩管理系统(结构化实现) 任务:学生成绩的判断处理
如果要改变就近配对关系,可以用 大括号来实现。
➢执行过程: 如果条件表达式的值为真(true) 时,则执行语句或语句块1,然后 跳出if-else结构,继续执行if语句 的下一条语句;
《Ja《vJaa程va序程设序计设》计课》程组
项目:学生成绩管理系统(结构化实现) 任务:学生成绩的判断处理
➢如果表达式的值为假(false), 则执行语句或语句块2,然后然后 继续执行if语句的下一条语句。
相关知识与技术
➢执行过程: 如果条件表达式的值为真(true) 时,则执行紧跟在后面的语句或语 句块,如果表达式的值为假 (false),则执行if语句后面的语 句。
《Ja《vJaa程va序程设序计设》计课》程组
项目:学生成绩管理系统(结构化实现) 任务:学生成绩的判断处理
相关知识与技术
✓ 单一分支结构流程图
项目:学生成绩管理系统(结构化实现) 任务:学生成绩的判断处理
Java语言程序设计第3章
Java 流程控制
3.1 语句及程序结构 3.2 顺序结构 3.3 选择结构 3.4 循环结构 3.5 跳转语句
3.1 语句及程序结构
语句用来向计算机系统发出操作指令。程序由一系列 语句组成。 ① 表达式语句 表达式; 如:total=math+phys+chem; ② 空语句 ; ③ 复合语句 用 “{}”将多条语句括起来,在语法上作为1 条语句使用。如:{z=x+y; t=z/10;} ④ 方法调用语句 方法名(参数); 如: System.out.println(“Java Language”); ⑤ 控制语句 完成一定的控制功能,包括选择语句、循 环语句和转移语句。如:break;
}
}
for语句
for(表达式1;表达式2;表达式3) {
循环体 }
表达式1
false
ห้องสมุดไป่ตู้表达
式2
true
循环体
表达式1:循环初值;
表达式3
表达式2:布尔表达式,判断循环是否继续; 表达式3:修改循环变量值。
例:计算1~100之间的和 public class Sum3 {
public static void main(String args[]) { int i, s=0; for (i=1; i<=100; i++)
3.2 顺序结构
顺序结构是最简单的一种程序结构, 程序按照语句的书写次序顺序执行。
例:计算太阳和地球之间的万有引力
public class Force {
public static void main(String args[]) {
double g, mSun, mEarth, f; g=6.66667E-8; mSun = 1.987E33; mEarth = 5.975E27; f = g* mSun* mEarth /(1.495E13*1.495E13); System.out.println("The force is "+f); } } 程序运行结果如下:
java表达式和流程控制语句
17
其他运算符
扩展赋值运算符 +=、-=、*=、/=、%=、&=、 |=、^=、>>=、<<=、>>>= 条件运算符 ?:
点运算符 .
实例运算符 instanceof
new运算符
数组下标运算符[ ]等
18
条件运算符
条件运算符(?:)是三元运算符,它的一 般形式为:
表达式 ? 语句1 : 语句2; 表达式得到一个逻辑值,根据该值的真假决定 执行什么操作。如果值为真,执行语句1,否 则执行语句2。
34
switch语句例
例3-11
1 // colorNum是整型变量 2 switch (colorNum) { 3 case 0: 4 setBackground(Color.red); 5 break; 6 case 1: 7 setBackground(Color.green); 8 break; 9 default: 10 setBackground(Color.black); 11 break; 12 }
类型既可以是简单类型,也可以是类类型(对象)。 基本类型的变量在说明之后,系统自动在内存分配 相应的存储空间。对象说明后,要调用new来创建 对象实例,才分配相应的存储空间。
4
变量初始化
Java不允许将未经初始化的变量用做操作数。对 简单变量在说明的同时可以进行初始化。 创建一个对象后,使用new运算符分配存储空间 时,系统按表中的值自动初始化成员变量。
24
数学函数
数学函数类Math,几个常用的函数调用:
Math.sin(0) //返回0.0,这是double类型的值 Math.cos(0) //返回1.0 Math.tan(0.5) //返回0.5463024898437905 Math.round(6.6) //返回7 Math.round(6.3) //返回6 Math.ceil(9.2) //返回10 .0 Math.ceil(-9.8) //返回-9 .0 Math.floor(9.2) //返回9 .0 Math.floor(-9.8) //返回-10 .0 Math.sqrt(144) //返回12.0 Math.pow(5,2) //返回25.0 Math.exp(2) //返回7.38905609893065 Math.log(7.38905609893065) //返回2.0 Math.max(560, 289) //返回560 MБайду номын сангаасth.min(560, 289) //返回289 Math.random( ) //返回0.0到1.0之间双精度的一个随机数值
第三章 Java程序控制结构
教学提示:前面几章介绍的Java程序只能按照语句的书写顺序依次执行,还不具备选择功能和循环功能。
本章将介绍Java语言的三种程序结构:顺序结构、选择结构和循环结构。
在三种结构中,顺序结构比较简单,而选择结构和循环结构是由Java语言的控制语句实现的。
Java语言的控制语句分为选择语句、循环语句和跳转语句。
教学目标:掌握Java语言三种程序控制结构,能灵活运用控制语句编写程序。
3.1顺序结构顺序结构是一种按照从上到下逐步执行程序的结构,中间没有判断和跳转语句,是最简单的程序结构,为了加深对顺序结构程序的认识,下面我们演示一个程序。
【例3-1】输入一个数,求其平方根。
设计思路:完成这个任务需要以下3个操作步骤:输入数据;计算其平方根;显示结果。
代码:j301.javaimport java.io.*;public class j301{public static void main(String arg[]) throws IOException{int x;double y;String str; //声明字符串类BufferedReader buf; //声明缓冲数据流类System.out.print("请输入一个数:");buf=new BufferedReader(new InputStreamReader(System.in));str=buf.readLine();x=Integer.parseInt(str);y=Math.sqrt(x); //求平方根System.out.println(x+"的平方根为:"+y); //显示计算结果}}运行结果如图3-1所示:2930图3-1 例3-1程序的运行结果程序的第1行是import语句,引入java.io包中的所有类,Java语言中处理输入输出的类都是在该包中。
由于程序中是使用缓冲字符输入流类(BufferedReader)和字符输入流类(InputStreamReader),因此必须使用import语句引入它们。
《Java语言程序设计》第3章-控制语句
break 和 continue 语句
break 和 continue 语句是循环控制语句,用于在循环中改变程序的执行流程。
break 语句:
立即终止循环,跳出循环体。
continue 语句:
跳过本次循环剩余的代码,继 续下一次循环。
常见应用:
在遍历列表时,根据某个条件 跳过某些元素或终止遍历。
总结
《Java语言程序设计》第 3章-控制语句
控制语句是编程中的重要概念,它允许程序根据不同的条件进行决策和循环。
if 语句
if 语句是一种条件语句,可以根据条件的真假执行不同的代码块。它是程序中进行分支逻辑的基 本工具之一。
1 基本语法:
if (条件) { 代码块 }
2 示例:
如果今天下雨,就带上雨伞。
注意:
条件会在代码块执行完后进行判 断,确保至少执行一次。
for 循环
for 循环是一种计数循环,它通过初始化、条件和迭代器来控制循环次数。它适用于已知循环次数的情况。
基本语法:
for (初始化; 条件; 迭代器) { 代码块 }
示例:
打印乘法表,循环10次。
常见应用:
遍历数组或集合中的元素, 循环读取文件中的内容等。
只要用户输入的数字大于0,就一直进行计算。
3
常见应用:
读取文件内容直到文件末尾,循环打印数组中的元素等。
do-while 循环
do-while 循环是一种后置条件循环,它先执行代码块,然后再判断条件是否满足。它确保至少执行一次代码块。
基本语法:
do { 代码块 } while (条件);
示例:
求用户输入数字的平均值,至少 循环一次。
3 常见应用:
第03章Java语言基础02运算符和表达式+控制语句02
例:
注意: 作为一种编程惯例,for循环一般用在那种循环次数事先可确定的情况,而while和do用在那种 循环次数事先不可确定的情况。
3.3 条件结构和循环结构
4 循环流程控制
下列语句可被用在更深层次的控制循环语句中: break [标注]:break语句被用来从switch语句中退出。 continue[标注]:continue语句被用来略过并跳到循环体的结尾。 例:
i++:使用i之后,i的值加1,即先取值,后自加。等价于i=i+1。 ++i:先使i加1,然后再使用i,即先自加,后取值。等价于i=i+1。 i--:使用i之后,i的值减1,即先取值,后自减。等价于i=i-1。 --i:先使i减1,然后再使用i,即先自减,后取值。等价于i=i-1。
注意: 我们建议,为了程序的易读性,在程序中尽量不要使用这种自增自减运算符。 +也可以用于将两个字符串连接到一块,如果任何一个操作数是String时,则+运算符变成String的 连接运算符;如果两个操作数为数字,则+运算符是加法运算符
请确认循环控制变量在循环体被开始执行之前已被正确初始化,并确认循环控制变量 是真时,循环体才开始执行。控制变量必须被正确更新以防止死循环。
3.3 条件结构和循环结构
3 do循环
do循环的句法是:
语句或块; }while (布尔测试) int i = 0; do { System.out.println("Are you finished yet?"); i++; } while (i < 10); System.out.println("Finally!"); do {
第3章Java语句结构
2.do while语句
do while语句的基本结构为:
do { 循环体
} while (condition);
执行顺序:
2.do while语句 注意:
先循环,后判断。与while语句不同,它的循环体至 少会被执行一次。
循环体中应该有改变条件表达式值的语句,否则就会 陷入死循环。
2.do whห้องสมุดไป่ตู้le语句
}
2.switch语句
当if语句嵌套的层次太多时会严重影响程序的可读性,这 时可以用switch语句。
执行过程: 表达式的值首先与每个case语句中
的常量比较。如果发现了一个与之匹 配的,则执行该case语句后的代码。 如果没有一个case常量与表达式的值 相匹配,则执行default语句。
2.switch语句 注意:
while语句的基本结构为:
while (循环条件){ 循环体;
}
执行顺序:
1.while语句 注意:
先判断,后循环。如果一开始条件就为假,则可能一 次循环体也不执行。
循环体中应该有改变条件表达式值的语句,否则就会 陷入死循环。
1.while语句
结果:count=5050
分析:去掉{}后,循环体只包含语句 count+=i;由于循环变量i无法改变,该循 环将成为死循环
(1)表达式的返回值必须是其中之一:int ,byte,char,short。
(2)case后必须是常量,而且不能有相同的值。
(3)case分支对应的语句可以是单条语句,也可以包括多条语句,系统 自动将其视为一个整体。
(4)break语句用于在case分支执行完成以后,强制程序跳出switch语 句,即不再进行后边的匹配工作。如果没有该语句,则该case分支完成 后将不再进行任何匹配操作,继续执行其余的case分支。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
import java.applet.Applet; // public class GetSquare extends Applet;//声明类语句
Java操作性语句有表达式语句、复合语句、选择语 句和循环语句等。语句以分号“;”作为结束标志, 单独的一个分号被看作一个空语句,空语句不做任 何事情。
1. 表达式语句 在表达式后边加上分号“;”,就是一个表达式语句。 经常使用的表达式语句有赋值语句和方法调用语句。 表达式语句是最简单的语句,它们被顺序执行,完 成相应的操作。
例如:
int k, i=3, j=out.println(″k=″+k);
2. 复合语句
复合语句也称为块(block)语句,是包含在一对大 括号{}中的任意语句序列。与其他语句用分号作结束 符不同,复合语句右括号}后面不需要分号。尽管复 合语句含有任意多个语句,但从语法上讲,一个复 合语句被视为一个简单语句。
break;
case 常量2: 语句2;
break;
......
default: 语句n;
} 其中switch、case、default是关键字,default子句可 以省略。开关语句先计算表达式,然后将表达式值 与各个常量比较,如果表达式值与某个常量相等, 就执行该常量后面的语句;如果都不相等,就执行 default下面的语句。如果无default子句,就什么都 不执行,直接跳出开关语句。
第3章 Java语句及其控制结构
3.1 Java程序结构 3.2 选择语句 3.3 循环语句 3.4 跳转语句 习题
3.1 Java程序结构
3.1.1 Java程序构成
例3.1 以一个程序范例来说明Java程序的构成。
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); } } }
从例3.1可以看到,Java源程序一般包括Java包引入 (如果有的话)和类定义两部分。
例3.7 对一维数组中的每个元素赋值,然后按逆序输 出,结果如图3.5所示。
public class A2 { public static void main(String args[]) { int i; int a[]=new int[5];
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+″ 年不是闰年″);
例3.3 比较两个数的大小并按升序输出,运行结果如 图3.1所示。
class C1 { public static void main(String args[]) { double d1=23.4; double d2=35.1; if(d2>=d1) { System.out.println(d1);
3.2 选择语句
利用选择语句结构可以根据条件控制程序流程,改 变程序执行的顺序。
3.2.1 if语句
if语句的语法格式为: if (条件表达式) s1语句; 这是最简单的单分支结构。条件表达式的值为true, 就执行s1语句,否则就忽略s1语句。s1语句可以是复 合语句。
3.2.2 if…else语句
else s3语句;
在这里依次计算条件表达式,如果某个条件表达式 的值为true,就执行它后面的语句,其余部分被忽略; 所有表达式的值都为false,就执行最后一个else后的 s3语句。s1、s2和s3都可以是复合语句。
例3.4 下面是一个用if…else语句构造多分支程序的例 子,判断某一年是否为闰年。 闰年的条件是符合下面二者之一: 能被4整除,但不 能被100整除;能被400整除。输出结果如图3.2所示。
方法类似于其他程序设计语言中的函数,可以调用, 可以有返回值。成员方法可以继承父类的方法,也 可以自定义成员方法。根据需要,方法中可以定义 局部变量,但更重要的是组织方法中的语句结构, 因为Java程序由各种语句结构控制着程序流程和功 能的实现。
3.1.2 Java语句
Java语句是Java标识符的集合,由关键字、常量、 变量和表达式构成。Java语句分为说明性语句和操 作性语句。
year=2000; // 方法2 if (year%4!=0) leap=false; else if (year%100!=0) leap=true; else if (year%400!=0) leap=false; else leap=true;
if (leap==true) System.out.println(year+″ 年是闰年″); else System.out.println(year+″ 年不是闰年″);
if语句通常与else语句配套使用,形成二分支结构。 它的语法格式为: if (条件表达式) s1语句;
else s2语句; 当条件表达式的值为true,就执行s1语句,忽略else 和s2语句;条件表达式的值为false,程序忽略s1语句, 执行else后面的s2语句。s1和s2都可以是复合语句。
图 3.2
方法1用一个逻辑表达式包含了所有的闰年条件;方 法2使用了if…else语句的复合形式;方法3则通过大 括号{}对if…else进行匹配来实现闰年的判断。可以根 据程序对比这3种方法,体会其中的联系和区别,在 不同的场合选用适当的方法。
3.2.4 switch开关语句
虽然嵌套的条件语句可实现多个分支处理,但嵌套 太多时容易出错和混乱,这时可以使用开关语句 switch处理。实际上开关语句switch也是一种if…else 结构,不过它使你在编程时很容易写出判断条件, 特别是有很多条件选项的时候。 开关语句switch的语法格式为: switch (表达式) { case 常量1: 语句1;
Java程序中,必须含有一个可被外界(通常是java解 释器)所直接调用的类,这个类称为该应用程序的 主类。一个源程序中可以定义多个类,但只能有一 个是主类,Java Applet程序的主类是继承自Applet 的子类。Java Application程序的主类是包含main方 法的类,整个应用程序就是从main方法开始执行的。
3.3 循环语句
循环可使程序根据一定的条件重复执行某一部分程 序代码,直到满足终止循环条件为止。 Java中提供的循环语句有: 确定次数循环(for)、 条件循环(while)、先执行后判定循环(do)。
3.3.1 for循环语句
如果希望程序的一部分内容按固定的次数重复执行, 通常可以使用for循环。for循环采用一个计数器控制 循环次数,每循环一次计数器就计数,直到完成给 定的循环次数为止。
例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); } }
使用开关语句时,注意以下几点:
• case后面的常量必须是整数或字符型,而且不能有 相同的值;
• 通常在每一个case中都应使用break语句提供一个 出口,使流程跳出开关语句。否则,在第一个满足 条件case后面的所有语句都会被执行,这种情况叫做 落空。
例3.5 有break语句的switch结构示例。本程序当温度 变量c小于10℃时,显示“有点冷”;c小于25℃时, 显示“合适”;c大于25℃且小于35℃时,显示“有点 热”;c大于35℃时,显示“太热了”。输出结果为c 等于28℃时的情况如图3.3所示。
成员方法为类中的方法,用来实现类的功能和行为, 是完成程序任务的关键。Java Application程序中一 定要有main主方法。而Java Applet程序一般要有 init()初始化方法或paint(Graphics g)画图方法。
应该注意到,类体中除了成员变量说明语句外没有 其他语句,Java规定所有操作性语句必须放在成员 方法中。
year=2050; // 方法3 if (year%4==0) { if (year%100==0) { if (year%400==0)
leap=true; else leap=false; } else leap=false; } else leap=false;
if (leap==true) System.out.println(year+″ 年是闰年″); else System.out.println(year+″ 年不是闰年″); } }