JAVA语言程序设计-JAVA流程控制.ppt

上传人:牧羊曲112 文档编号:6510202 上传时间:2023-11-07 格式:PPT 页数:37 大小:225KB
返回 下载 相关 举报
JAVA语言程序设计-JAVA流程控制.ppt_第1页
第1页 / 共37页
JAVA语言程序设计-JAVA流程控制.ppt_第2页
第2页 / 共37页
JAVA语言程序设计-JAVA流程控制.ppt_第3页
第3页 / 共37页
JAVA语言程序设计-JAVA流程控制.ppt_第4页
第4页 / 共37页
JAVA语言程序设计-JAVA流程控制.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《JAVA语言程序设计-JAVA流程控制.ppt》由会员分享,可在线阅读,更多相关《JAVA语言程序设计-JAVA流程控制.ppt(37页珍藏版)》请在三一办公上搜索。

1、第三章 Java流程控制,本章为课程的重点之一3.1 语句及程序结构3.2 顺序结构3.3 选择结构3.4 循环结构 3.5 跳转语句,语句,语句,Statement向计算机系统发出操作的代码程序由一系列语句组成,语句以“;”结束Java语句类型表达式语句,如:total=a+b;空语句,只有一个“;”复合语句,用“”将多条语句括起来作为一条语句使用 z=x+y;t=z/10;方法调用语句:方法名(参数);如:System.out.println(“Java Language”);控制语句,完成一定的控制功能,包括选择语句循环语句转移语句,“/”是单行注释符,仅对当前行有效多行注释用”/*”开

2、始,已”*/”结束,程序结构,任何程序有3种基本的结构:顺序结构分支结构循环结构顺序结构最简单的一种程序结构程序按照语句的书写次序顺序执行,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);,顺序结构 Demo1,【例3-1】,程序运行

3、结果如下:The force is 3.5413E27,顺序结构 Demo2,【例3-2】,/华氏温度转换为摄氏温度:c=5(F-32)/9public class Conversion public static void main(String args)float f,c;f=70.0f;c=5*(f-32)/9;System.out.println(Fahrenheit=+f);System.out.println(Centigrade=+c);,程序运行结果如下:Fahrenheit=70.0Centigrade=21.11111,顺序结构Demo3,【例3-3】,public cl

4、ass Root/求解方程ax+b=0的根x public static void main(String args)float a,b,x;a=2.0f;b=6.0f;x=-b/a;/求根 x System.out.println(a=+a);/Out Result System.out.println(b=+b);System.out.println(x=+x);,/a=Float.parseFloat(args0);/b=Float.parseFloat(args1);,程序运行结果:a=2.0b=6.0 x=-3.0,Eclipse“运行”Java应用程序对话框的(x)=自变量栏中键入

5、:2.0 6.0运行程序,屏幕输出结果如下:a=2.0b=6.0 x=-3.0这里:2.0和6.0分别作为第1和第2个参数传递给args0和args1,Demo3 解析:,其中语句:a=Float.parseFloat(args0);,这是命令行输入的第一个数,Demo3 解析:,命令行输入的是字符串数据,需要转换为计算所需要的数据类型将命令行第i个输入转换为以下类型的数据:整型数 a=Integer.parseInt(argsi);短整型 a=Short.parseShort(argsi);单精度浮点:a=Float.parseFloat(argsi);双精度浮点:a=Double.pars

6、eDouble(argsi);,使用Scanner类输入数据,Scanner是SDK1.5新增的一个类,使用该类创建的对象可扫描控制台的输入,即程序直接读取键盘输入的数据 Scanner in=new Scanner(System.in);/创建对象inSystem.in属于Java标准输入流调用Scanner类的下列方法读取控制台输入的各类数据:nextInt()整型数据 int a=in.nextInt();nextDouble()双精度数据 double b=in.nextDouble();nextFloat单精度数据 如 float c=in.nextFloat();next字符串,输

7、入的是一个单词,即空格结束nextLine 字符串,输入是一个语句,以回车结束,使用Scanner类输入数据,使用Scanner类,java源文件中必须包含 import java.util.Scanner;或 import java.util.*;/导入类库文件 Example:Scanner rd=new Scanner(System.in);System.out.println(“请问你的姓名和年龄?);String name=rd.nextLine();int age=rd.nextInt();System.out.printf(“哦,你是”+name+“,年龄+age);,选择结构,

8、选择结构,也叫分支结构Java分支选择语句:if 语句 二选一if 语句嵌套或switch语句 多选一,if 语句,if(布尔表达式)语句1else 语句2,Else子句是可选项若有,则布尔表达式的值为true,执行语句1,否则,执行语句2若无,则布尔表达式的值为true,执行语句1,否则,执行if语句的后续语句语句1或语句2可以是单语句,也可以是复合语句等(花括号括起),选择结构 Demo1:,【例3-4】输入2个整数,输出较小者,解题:利用Scanner类的方法输入2个整数If语句进行判断,输出较小者,【例补3-1】判断某一年份是否为润年,解题:输入年份数据润年判断:条件是能被4整除但又不

9、能被100整除或能被400整除的公元年 year%4=0&year%100!=0|year%400=0,选择结构 Demo2:,例3-5:求解ax+b=0(a0)的根,解题:利用Scanner类的方法输入a,b的值若a不为0,则输出-b/a;若a=0,则输出方程无解。,if 语句扩展形式,if(布尔表达式1)语句1else if(布尔表达式2)语句2 else if(布尔表达式n)语句nelse 语句n+1,从上往下依次判断条件某个布尔表达式的值为true,就执行相应的语句不再判断其余的条件,转而执行if语句的后续语句,条件之间相互排斥,public class Function public

10、 static void main(String args)float x,y;x=Float.parseFloat(args0);if(x0,if 语句嵌套,if(布尔表达式1)语句1else if(布尔表达式2)语句2 else 语句3,if 语句中可以包含if语句,形成嵌套,if(布尔表达式1)if(布尔表达式2)语句1 else 语句2 else 语句3,注意:1、else总与离它最近的if配对 2、条件之间上下包含,if 语句嵌套Demo,【例补3-2】已知一元二次方程的三个系数a,b,c,求一元二次方程ax2+bx+c=0的2个根,解题:当a、b、c均为零时,方程有无数解;当a、b

11、为零,c0时,方程无解;当a为零,b0时,方程解为Xc/b;当a0时,求:db24ac若d0,有两个不同实根 X(bSqr(d)/(2a)若d0时,有两个不同复根:Xb/(2a)Sqr(d)/(2a)i,注意:代码书写时采用阶梯方式,便于阅读,Switch语句,switch(表达式)/计算表达式,得到值 case 值1:语句块1;/如果表达式值为值1,执行语句块1 break;/终止,结束switch语句 case 值2:语句块2;/如果表达式值为值2,执行语句块2 break;/终止,结束switch语句 case 值n:语句块n;/如果表达式值为值n,执行语句块n break;/终止,结束

12、switch语句 default:/如果表达式值与值1值n都不同,执行语句块n+1 语句块n+1;,break:终止程序以下部分的执行,执行switch语句的后续语句,若无,将继续执行后续的case子句中的语句块,表达式的数据类型可以是byte、char、short和int类型,不允许是浮点数类型和long类型,符合条件的case语句后跟的是语句块,而非单条语句,【例3-7】命令行输入112之间的数字,输出对应的月份的英文名,public class Chapter37 public static void main(String args)String str=;switch(Integer

13、.parseInt(args0)/根据输入的值进行多选 case 1:str=January;break;case 2:str=February;break;case 3:str=March;break;case 4:str=April;break;case 5:str=May;break;case 6:str=June;break;case 7:str=July;break;case 8:str=August;break;case 9:str=September;break;case 10:str=October;break;case 11:str=November;break;case 1

14、2:str=December;break;default:str=The Input Error!;System.out.println(str);/输出,多分支Demo,【例3-8】将百分制成绩转化为优秀、良好、中等、及格和不及格的5级制成绩。标准为:优秀:90-100分;良好:80-89分;中等:70-79分;及格:60-69分;不及格:60分以下,多分支结构总结:if-else语句可实现switch 语句所有的功能,但分支很多的情况下使用switch语句更为简练,且可读性强。if-else语句可以基于一个范围内的值或一个条件选择不同的操作,但switch语句当中的每个常量都必须对应一个单

15、值,循环结构,循环语句在一定条件下,反复执行一段程序代码被反复执行的程序代码称为循环体。循环有两种类型:计数控制控制累计执行循环体的次数,次数到则结束循环如1+2+3+100或98+96+94+4+2事态控制由某些条件决定循环结束。如计算一系列正整数之和,遇负数停止循环。Java提供的循环语句有while语句dowhile语句for语句(多用于计数控制),while 语句,语句格式:while(布尔表达式)循环体含义:当表达式结果为true时,重复执行循环体。特点:先执行,再判断,循环可能一次也不执行,循环体可以是单一语句,也可以是复合语句(用花括号括起),dowhile语句,语句格式do 循

16、环体while(布尔表达式);含义:重复执行循环体,直到布尔表达式为false。特点:先执行,再判断,循环至少执行一次 注意:两种格式循环体中至少有一条语句用以改变循环条件,否则会死循环,循环控制Demo1,【例3-9】计算10!10!=1*2*3*10【例3-10】计算150之间的奇数和与偶数和【例补3-3】输入一个正整数n,输出 2/1+3/2+5/3+8/5+.的前n项之和,保留4位小数(不足4位时,不必用0填满4位)。,解题:该序列从第2项起每一项的分子是前一项分子与分母的和分母是前一项的分子,【例补3-4】编程:输入一批非负数,当输入负数时,表示输入结束。求这批非负数据的最大值、最小

17、值和平均值。,for语句,for(Exp1;Exp2;Exp3)循环体Exp1,Exp2,Exp3指表达式1、2、3执行过程执行Exp1,给循环变量(及其它变量)赋初值;计算Exp2的值,若true,执行循环体中的语句;执行Exp3,修改循环变量的值重复计算Exp2的值,若true,执行循环体,直到Exp2的值为false,for语句示例,示例1:int i=0,s=0;for(i=1;i10;i+)s+;System.out.println(i=+i+,s=+s);示例2:int i=0,s=0;for(i=1;i10;i+)s+;System.out.println(i=+i+,s=+s)

18、;,执行结果:i=1,s=0,执行结果:i=10,s=9,循环控制Demo2,【例3-13】计算Fibonacci数列中的前20项。Fibonacci数列:前两项是1、1,第三项是前二项之和,以后每一项都是前二项之和。即为:1、1、2、3、5、8、13、21、34【例3-14】判断素数,解题:素数是除了1及自身外,不能被其它数整除的自然数。对于一个自然数k,与2-(k-1)之间的每个整数进行相除如果没有一个能被整除,则k是素数;否则k不是素数注意:2是最小素数,负数、0、1都不是素数,跳转语句,break语句:使程序的流程从一个语句块内部跳转出来。通常在switch和循环语句中使用。conti

19、nue语句:只在循环语句中使用。作用是终止当前这轮的循环,跳过本轮循环剩余的语句,直接进入下一轮循环。,public static void main(String args)int i,sum;sum=0;for(i=1;i=5;i+)sum=sum+i;if(i%2!=0)continue;System.out.println(加个偶数+i);System.out.println(sum=+sum);,执行结果:加个偶数2加个偶数4sum=15,多重循环 Multi-Loop,例如:for(;)/外循环开始 for(;)/内循环开始/内循环结束/外循环结束,public class Pri

20、mes public static void main(String args)int i,k;boolean yes;for(k=2;k=50;k+)/外循环,k:250 yes=true;i=2;while(i=k-1,【例3-16】求2-50之间的素数,循环控制Demo3,【例3-15】计算输出1!、2!、5!以及它们的和,解题:外循环k遍历1-5内循环求每个k的阶程,1!=12!=23!=64!=245!=120Total sum=153,*,【例补3-5】输出右边的图形,解题:外循环控制行内循环控制每行输出*个数,常用算法总结,欧几里德算法:输入2个整数a和b,比较a和b,将a设置为

21、较大数,b为较小数。a除以b,得余数为r判断r0,则b赋值给a,r赋值给b,重复步骤3、4,直至r=0若r=0,则当前的b为最大公约数 最小公倍数为:(初始的a)*(初始的b)/(当前的b),一、求最值1、最大、最小值思路:第1个数赋值给max,min,对于后续输入的每个数n if(maxn)min=n;2、最大公约数,最小公倍数【例补3-6】输入两个整数,求它们的最大公约数和最小公倍数,常用算法总结,二、统计累加(1+3+5+100)、累积(求n!)平均值、计数【例补3-7】求表达式值。x、n由键盘输入,分析:这是n项求和的例子,可表示成sum=sum+item的形式 第i项等于第i-1项乘

22、以x/(i+1),即item=item*x/(i+1)故循环体可由item=item*x/(i+1)和sum=sum+item构成。初值问题:sum初值为0,item初值应为1。,常用算法总结,分析:设公鸡X只,母鸡Y只,小鸡Z只,列出方程式:X+Y+Z=100 5X+3Y+Z/3=100二个方程求3个未知数,无法用代数方法求解可将X、Y、Z分别为0-100的每种可能性都去试一下,如符合,则就是其中的一种购买方案。(事实上X和Y的循环可分别为0到20和0到33),三、穷举法【例补3-8】用100元钱买100只鸡,其中公鸡每只5元,母鸡每只3元,小鸡3只1元,问可买公鸡、母鸡、小鸡各多少只?,常用算法总结,【例补3-9】水仙花数:是一个三位数,它各位数字的立方和等于它本身。如:153=1*1*1+5*5*5+3*3*3【例补3-10】求1-1000内的所有完数.完数:因子和与它本身相等的数【例补3-11】输入一个十进制数,输出对应的二进制数,三、递推法 如【例3-13】计算Fibonacci数列中的前20项。四、数学知识题判断是否素数求水仙花数、完数;分段求函数值;进制转换等,常用算法总结,*,五、输出图形【例补3-12】输出如下所示图形。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号