




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章 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”); 控制语句,完成一定的控制功能,包括 选择语句 循环语句 转移语句,“/”是单行注释符,仅对当前行有效 多行注释用”/*”开始,已”*/”结束,程序结构,任何程序有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】,程序运行结果如下: The force is 3.5413E27,顺序结构 Demo2 ,【例3-2】,/ 华氏温度转换为摄氏温度:c=5(F-32)/9 public 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.0 Centigrade=21.11111,顺序结构Demo3 ,【例3-3】,public class 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.0 b=6.0 x=-3.0,Eclipse“运行”Java应用程序对话框的(x)=自变量栏中键入: 2.0 6.0 运行程序,屏幕输出结果如下: a=2.0 b=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.parseDouble(argsi);,使用Scanner类输入数据,Scanner是SDK1.5新增的一个类,使用该类创建的对象可扫描控制台的输入 ,即程序直接读取键盘输入的数据 Scanner in=new Scanner(System.in); /创建对象in System.in属于Java标准输入流 调用Scanner类的下列方法读取控制台输入的各类数据: nextInt() 整型数据 int a=in.nextInt(); nextDouble() 双精度数据 double b=in.nextDouble(); nextFloat单精度数据 如 float c=in.nextFloat(); next字符串,输入的是一个单词,即空格结束 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);,选择结构,选择结构,也叫分支结构 Java分支选择语句: if 语句 二选一 if 语句嵌套或switch语句 多选一,if 语句,if (布尔表达式) 语句1 else 语句2,Else子句是可选项 若有,则布尔表达式的值为true,执行语句1,否则,执行语句2 若无,则布尔表达式的值为true,执行语句1,否则,执行if语句的后续语句 语句1或语句2可以是单语句,也可以是复合语句等(花括号括起),选择结构 Demo1:,【例3-4】输入2个整数,输出较小者,解题: 利用Scanner类的方法输入2个整数 If语句进行判断,输出较小者,【例补3-1】判断某一年份是否为润年,解题: 输入年份数据 润年判断:条件是能被4整除但又不能被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) 语句1 else if(布尔表达式2) 语句2 else if(布尔表达式n) 语句n else 语句n+1,从上往下依次判断条件 某个布尔表达式的值为true,就执行相应的语句 不再判断其余的条件,转而执行if语句的后续语句,条件之间相互排斥,public class Function public static void main(String args) float x, y; x=Float.parseFloat (args0); if ( x0 ,if 语句嵌套,if(布尔表达式1) 语句1 else 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为零,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; / 终止,结束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.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 12: 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语句当中的每个常量都必须对应一个单值,循环结构,循环语句 在一定条件下,反复执行一段程序代码 被反复执行的程序代码称为循环体。 循环有两种类型: 计数控制 控制累计执行循环体的次数,次数到则结束循环 如1+2+3+100或98+96+94+4+2 事态控制 由某些条件决定循环结束。 如计算一系列正整数之和,遇负数停止循环。 Java提供的循环语句有 while语句 dowhile语句 for语句(多用于计数控制),while 语句,语句格式: while(布尔表达式) 循环体 含义:当表达式结果为true时,重复执行循环体。 特点:先执行,再判断,循环可能一次也不执行,循环体可以是单一语句,也可以是复合语句(用花括号括起),dowhile语句,语句格式 do 循环体 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】编程:输入一批非负数,当输入负数时,表示输入结束。求这批非负数据的最大值、最小值和平均值。,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);,执行结果: 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和循环语句中使用。 continue语句:只在循环语句中使用。作用是终止当前这轮的循环,跳过本轮循环剩余的语句,直接进入下一轮循环。,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 加个偶数4 sum=15,多重循环 Multi-Loop,例如: for( ; ; ) /外循环开始 for(; ; ) /内循环开始 /内循环结束 /外循环结束,public class Primes 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!=1 2!=2 3!=6 4!=24 5!=120 Total sum=153,* * * * * * * * * * * * * * * * * * * * *,【例补3-5】输出右边的图形,解题: 外循环控制行 内循环控制每行输出*个数,常用算法总结,欧几里德算法: 输入2个整数a和b,比较a和b,将a设置为较大数,b为较小数。 a除以b,得余数为r 判断r0,则b赋值给a,r赋值给b,重复步骤3、4,直至r=0 若r=0,则当前的b为最大公约数 最小公倍数为:(初始的a)* (初始的b)/ (当前的b),一、求最值 1、最大、最小值 思路:第1个数赋值给max,min,对于后续输入的每
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年浙江省台州市高考英语第二次质检试卷
- 英文租赁合同样本
- 杂粮加工企业文化建设考核试卷
- 小学英语北京版一年级下册Lesson 5教学设计
- 2024年04月青海黄南州事业单位招聘23人(含医疗岗)笔试历年专业考点(难、易错点)附带答案详解
- 培训服务协议合同范本
- 一年级道德与法治下册 第四单元 我们在一起 16大家一起来教学设计2 新人教版
- 原春七年级地理下册 第六章 第二节 自然环境教学设计 (新版)新人教版
- 竞争格局中的渠道管理考核试卷
- 体育场馆体育赛事品牌市场拓展策略分析考核试卷
- 农夫山泉产品陈列手册(共45页).ppt
- 【原创】《“备-教-学-评”目标一致性的实施策略》讲座PPT
- 企业集团财务管理综合练习计算
- 【北师大版】六年级下册数学教学设计-总复习《数的认识》(1)
- 行政事业单位财务管理制度范文
- 机房专用精密空调巡检维护
- 养老机构服务高质量115项明细
- 动、静平衡原理及平衡方法
- 船舶首制船设计任务书doc
- 电气专业迎峰度夏措施及预案
- 创业路演路演(PPT课件)
评论
0/150
提交评论