您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > 浙江大学Java程序设计课程PPT第三章
第三章Java流程控制2020年2月12日ZJU,CS本章为课程的重点之一3.1语句及程序结构3.2顺序结构3.3选择结构3.4循环结构3.5跳转语句语句语句,Statement向计算机系统发出操作的代码程序由一系列语句组成,语句以“;”结束Java语句类型表达式语句,如:total=a+b;空语句,只有一个“;”复合语句,用“{}”将多条语句括起来作为一条语句使用{z=x+y;t=z/10;}方法调用语句:方法名(参数);如:System.out.println(“JavaLanguage”);控制语句,完成一定的控制功能,包括选择语句循环语句转移语句“//”是单行注释符,仅对当前行有效多行注释用”/*”开始,已”*/”结束程序结构任何程序有3种基本的结构:顺序结构分支结构循环结构顺序结构最简单的一种程序结构程序按照语句的书写次序顺序执行publicclassForce{//计算太阳和地球之间的万有引力publicstaticvoidmain(Stringargs[]){doubleg,mSun,mEarth,f;g=6.66667E-8;mSun=1.987E33;mEarth=5.975E27;f=g*mSun*mEarth/(1.495E13*1.495E13);System.out.println(Theforceis+f);}}顺序结构Demo1,【例3-1】程序运行结果如下:Theforceis3.5413E27顺序结构Demo2,【例3-2】//华氏温度转换为摄氏温度:c=5(F-32)/9publicclassConversion{publicstaticvoidmain(Stringargs[]){floatf,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】publicclassRoot{//求解方程ax+b=0的根xpublicstaticvoidmain(Stringargs[]){floata,b,x;a=2.0f;b=6.0f;x=-b/a;//求根xSystem.out.println(a=+a);//OutResultSystem.out.println(b=+b);System.out.println(x=+x);}}//a=Float.parseFloat(args[0]);//b=Float.parseFloat(args[1]);程序运行结果:a=2.0b=6.0x=-3.0Eclipse“运行”—Java应用程序对话框的(x)=自变量栏中键入:2.06.0运行程序,屏幕输出结果如下:a=2.0b=6.0x=-3.0这里:2.0和6.0分别作为第1和第2个参数传递给args[0]和args[1]Demo3解析:其中语句:a=Float.parseFloat(args[0]);转换为浮点数这是命令行输入的第一个数Demo3解析:命令行输入的是字符串数据,需要转换为计算所需要的数据类型将命令行第i个输入转换为以下类型的数据:1.整型数a=Integer.parseInt(args[i]);2.短整型a=Short.parseShort(args[i]);3.单精度浮点:a=Float.parseFloat(args[i]);4.双精度浮点:a=Double.parseDouble(args[i]);使用Scanner类输入数据Scanner是SDK1.5新增的一个类,使用该类创建的对象可扫描控制台的输入,即程序直接读取键盘输入的数据Scannerrd=newScanner(System.in);//创建对象rdSystem.in属于Java标准输入流调用Scanner类的下列方法读取控制台输入的各类数据:nextInt()→整型数据inta=rd.nextInt();nextDouble()→双精度数据doubleb=rd.nextDouble();nextFloat→单精度数据如floatc=rd.nextFloat();next→字符串,输入的是一个单词,即空格结束nextLine→字符串,输入是一个语句,以回车结束使用Scanner类输入数据使用Scanner类,java源文件中必须包含importjava.util.Scanner;或importjava.util.*;//导入类库文件Example:Scannerrd=newScanner(System.in);System.out.println(“请问你的姓名和年龄?);Stringname=rd.nextLine();intage=rd.nextInt();System.out.printf(“哦,你是”+name+“,年龄+age);选择结构选择结构,也叫分支结构Java分支选择语句:if语句二选一if语句嵌套或switch语句多选一if语句if(布尔表达式)语句1[else语句2]布尔表达式语句2falsetrue语句1布尔表达式语句1truefalse1.Else子句是可选项2.若有,则布尔表达式的值为true,执行语句1,否则,执行语句23.若无,则布尔表达式的值为true,执行语句1,否则,执行if语句的后续语句4.语句1或语句2可以是单语句,也可以是复合语句等(花括号括起)选择结构Demo1:【例3-4】输入2个整数,输出较小者解题:1.利用Scanner类的方法输入2个整数2.If语句进行判断,输出较小者【例补3-1】判断某一年份是否为润年解题:1.输入年份数据2.润年判断:条件是能被4整除但又不能被100整除或能被400整除的公元年year%4==0&&year%100!=0||year%400==0选择结构Demo2:[例3-5]:求解ax+b=0(a≠0)的根解题:1.利用Scanner类的方法输入a,b的值2.浮点数在计算机中是近似存储,判断a的绝对值是否大于0.000001,若是输出-b/a,若不是,则可以认为a接近0,就不求根了。if语句扩展形式if(布尔表达式1)语句1elseif(布尔表达式2)语句2……elseif(布尔表达式n)语句nelse语句n+11.从上往下依次判断条件2.某个布尔表达式的值为true,就执行相应的语句3.不再判断其余的条件,转而执行if语句的后续语句publicclassFunction{publicstaticvoidmain(Stringargs[]){floatx,y;x=Float.parseFloat(args[0]);if(x0)y=0;elseif(x0&&x=10)y=x;elseif(x10&&x=20)y=10;elsey=-0.5*x+20;System.out.println(x=+x);System.out.println(y=+y);}}例3-6分段函数xyx000x≤10x10x≤201020x0.5x+201.条件之间相互排斥if语句嵌套if(布尔表达式1)语句1elseif(布尔表达式2)语句2……else语句3if语句中可以包含if语句,形成嵌套if(布尔表达式1){if(布尔表达式2)语句1[else语句2]}else语句3注意:else总与离它最近的if配对if语句嵌套Demo【例补3-2】已知一元二次方程的三个系数a,b,c,求一元二次方程的2个根解题:•当a、b、c均为零时,方程有无数解;•当a、b为零,c≠0时,方程无解;•当a为零,b≠0时,方程解为X=-c/b;•当a≠0时,求:d=b2-4ac•若d≥0,X=(-b±Sqr(d))/(2a)•若d<0时,有两个不同复根:X=-b/(2a)±Sqr(-d)/(2a)iSwitch语句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类型【例3-7】命令行输入1~12之间的数字,输出对应的月份的英文名publicclassChapter37{publicstaticvoidmain(String[]args){Stringstr=;switch(Integer.parseInt(args[0])){//根据输入的值进行多选case1:str=January;break;case2:str=February;break;case3:str=March;break;case4:str=April;break;case5:str=May;break;case6:str=June;break;case7:str=July;break;case8:str=August;break;case9:str=September;break;case10:str=October;break;case11:str=November;break;case12:str=December;break;default:str=TheInputError!;}System.out.println(str);//输出}}多分支Demo【例3-8】将百分制成绩转化为优秀、良好、中等、及格和不及格的5级制成绩。标准为:优秀:90-100分;良好:80-89分;中等:70-79分;及格:60-69分;不及格:60分以下多分支结构总结:1.if-else语句可实现switch语句所有的功能,但分支很多的情况下使用switch语句更为简练,且可读性强。2.if-else语句可以基于一个范围内的值或一个条件选择不同的操作,但switch语句当中的每个常量都必须对应一个单值循环结构循环语句在一定条件下,反复执行一段程序代码被反复执行的程序代码称为循环体。循环有两种类型:计数控制控制累计执行循环体的次数,次数到则结束循环如1+2+3+…+100或98+96+94+…+4+2事态控制由某些条件决定循环结束。如计算一系列正整数之和,遇负数停止循环。Java提供的循环语句有while语句do…while语句for语句(用于计数控制)while语句语句格式:while(布尔表达式){循环体}含义:当表达式结果为true时,重复执行循环体。特点:先执行,再判断,循环可能一次也不执行truefalse逻辑表达式循环体循环体可以是单一语句,也可以是复合语句(用花括号括起)do…while语句语句格式do{循环体}while(布尔表达式);含义:重复执行循环体,直到布尔表达式为false。特点:先执行,再判断,循环至少执行一次注意:两种格式循环体中至少有一条语句用以改变循环条件,否则会死循环true循环体布尔表达式false循环控制Demo1【例3-9】计算10!10!=1*2*3*…*10【例3-10】计算1~50之间的奇数和与偶数和【例补3-3】输入一个正整数n,输出2/1+3/2+5/3+8/5+...的前n项之和,保留4位小数(不足4位时,不必用0填满4位)。解题:该序列从第2项起1.每一项的分子是前一项分子与分母的和2.分母
本文标题:浙江大学Java程序设计课程PPT第三章
链接地址:https://www.777doc.com/doc-3673866 .html