第三讲流程控制演示文稿_第1页
第三讲流程控制演示文稿_第2页
第三讲流程控制演示文稿_第3页
第三讲流程控制演示文稿_第4页
第三讲流程控制演示文稿_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三讲流程控制演示文稿当前第1页\共有37页\编于星期三\8点(优选)第三讲流程控制当前第2页\共有37页\编于星期三\8点语句语句,Statement向计算机系统发出操作的代码程序由一系列语句组成,语句以“;”结束Java语句类型表达式语句,如:total=a+b;空语句,只有一个“;”复合语句,用“{}”将多条语句括起来作为一条语句使用

{z=x+y;t=z/10;}方法调用语句:方法名(参数);如:

System.out.println(“JavaLanguage”);控制语句,完成一定的控制功能,包括选择语句循环语句转移语句“//”是单行注释符,仅对当前行有效多行注释用”/*”开始,已”*/”结束当前第3页\共有37页\编于星期三\8点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当前第4页\共有37页\编于星期三\8点顺序结构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.11111C=5/9*(F-32)?当前第5页\共有37页\编于星期三\8点顺序结构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,b?程序运行结果:a=2.0b=6.0x=-3.0当前第6页\共有37页\编于星期三\8点选择结构选择结构,也叫分支结构Java分支选择语句:if语句二选一if语句扩展、if语句嵌套或switch语句多选一当前第7页\共有37页\编于星期三\8点if语句if(布尔表达式)

语句1[else

语句2]布尔表达式语句2falsetrue语句1布尔表达式语句1truefalseElse子句是可选项若有,则布尔表达式的值为true,执行语句1,否则,执行语句2若无,则布尔表达式的值为true,执行语句1,否则,执行if语句的后续语句语句1或语句2可以是单语句,也可以是复合语句等(花括号括起)当前第8页\共有37页\编于星期三\8点选择结构Demo1:【例3-4】输入2个整数,输出较小者

解题:利用Scanner类的方法输入2个整数If语句进行判断,输出较小者【例补3-1】判断某一年份是否为润年解题:输入年份数据润年判断:条件是能被4整除但又不能被100整除或能被400整除的公元年year%4==0&&year%100!=0||year%400==0当前第9页\共有37页\编于星期三\8点选择结构Demo2:[例3-5]:求解ax+b=0(a≠0)的根

解题:利用Scanner类的方法输入a,b的值若a不为0,则输出-b/a;若a=0,则输出方程无解。当前第10页\共有37页\编于星期三\8点选择结构(注意点)注意:if语句中满足或不满足条件执行的都是单语句,若有多条语句必须用花括号括起来构成一条复合语句importjava.util.*;publicclassScore{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in);intscore;System.out.print("请输入成绩:");score=in.nextInt();if(score<60)System.out.print("很遗憾,没有及格。");else{System.out.print("祝贺你,通过了~");System.out.print("再见");}}}请输入成绩:56;很遗憾,没有及格。当前第11页\共有37页\编于星期三\8点if语句扩展形式if(布尔表达式1)

语句1elseif(布尔表达式2)语句2

……elseif(布尔表达式n)

语句n[else

语句n+1]从上往下依次判断条件某个布尔表达式的值为true,就执行相应的语句不再判断其余的条件,转而执行if语句的后续语句条件之间相互排斥当前第12页\共有37页\编于星期三\8点importjava.util.Scanner;publicclassFunction{publicstaticvoidmain(Stringargs[]){Scannerin=newScanner(System.in);floatx,y;x=in.nextFloat();

if(x<=0)y=0;

elseif

(x>0&&x<=10)y=x;

elseif

(x>10&&x<=20)y=10;

else

y=0.5f*x+20;System.out.println("x="+x);System.out.println("y="+y);}}例3-6分段函数xyx<=000<x≤10x10<x≤201020<x0.5x+20当前第13页\共有37页\编于星期三\8点Demo【例3-8】将百分制成绩转化为优秀、良好、中等、及格和不及格的5级制成绩。标准为:

优秀:90-100分;

良好:80-89分;

中等:70-79分;

及格:60-69分;

不及格:60分以下当前第14页\共有37页\编于星期三\8点Demo【例】将输入的大小写字母互换,其他则不变importjava.util.Scanner;publicclassT2{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in);charch;ch=(in.nextLine()).charAt(0);if(ch>='a'&&ch<='z')ch=(char)(ch-32);elseif(ch>='A'&&ch<='Z')ch=(char)(ch+32);System.out.println(ch);}}if(ch>='a'&&ch<='z')ch=(char)(ch-32);if(ch>='A'&&ch<='Z')ch=(char)(ch+32);当前第15页\共有37页\编于星期三\8点if语句嵌套if(布尔表达式1)语句1else

if(布尔表达式2) 语句2……else语句3if语句中可以包含if语句,形成嵌套if(布尔表达式1){if(布尔表达式2) 语句1[else语句2]

}else语句3注意:1、条件之间上下包含

2、else总与离它最近的if配对当前第16页\共有37页\编于星期三\8点if语句嵌套Demoimportjava.util.*;publicclassT0{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in);floatx,y=0;x=in.nextFloat();if(x<2)if(x<1)y=x+2;elsey=x*2;System.out.println("y="+y);}}1.5y=3.0{}y=0.0当前第17页\共有37页\编于星期三\8点if语句嵌套Demo【例补3-2】已知一元二次方程的三个系数a,b,c,求一元二次方程ax2+bx+c=0的2个根,保留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)i注意:代码书写时采用阶梯方式,便于阅读当前第18页\共有37页\编于星期三\8点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语句后跟的是语句块,而非单条语句当前第19页\共有37页\编于星期三\8点【例3-7】输入1~12之间的数字,输出对应的月份的英文名importjava.util.Scanner;public

class

Chapter37{public

static

void

main(String[]args)

{Scannerin=newScanner(System.in);

Stringstr="";switch(in.nextInt()){//根据输入的值进行多选

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

}}当前第20页\共有37页\编于星期三\8点多分支Demo【例3-8】将百分制成绩转化为优秀、良好、中等、及格和不及格的5级制成绩。标准为:

优秀:90-100分;

良好:80-89分;

中等:70-79分;

及格:60-69分;

不及格:60分以下多分支结构总结:if-elseif语句可实现switch语句所有的功能.if-elseif语句可以基于一个范围内的值或一个条件选择不同的操作,但switch语句当中的每个常量都必须对应一个单值当前第21页\共有37页\编于星期三\8点多分支DemopublicclassT{publicstaticvoidmain(String[]args){inta=2,b=6;switch(a+3){case5:switch(b){

default:a=a-2;

case6:a=a+2;break;}default:a=a*2;}System.out.println(a);}}输出结果:8}输出结果:4当前第22页\共有37页\编于星期三\8点循环结构循环语句在一定条件下,反复执行一段程序代码被反复执行的程序代码称为循环体。循环有两种类型:计数控制控制累计执行循环体的次数,次数到则结束循环如1+2+3+…+100或98+96+94+…+4+2事态控制由某些条件决定循环结束。如计算一系列正整数之和,遇负数停止循环。Java提供的循环语句有for语句(多用于计数控制)while语句do…while语句当前第23页\共有37页\编于星期三\8点for语句for(Exp1;Exp2;Exp3)

循环体Exp1,Exp2,Exp3指表达式1、2、3执行过程执行Exp1,给循环变量(及其它变量)赋初值;计算Exp2的值,若true,执行循环体中的语句;执行Exp3,修改循环变量的值重复计算Exp2的值,若true,执行循环体,直到Exp2的值为false注意:循环体中的语句如是多条,必须用花括号括起来trueExp1Exp

2Exp

3false循环体当前第24页\共有37页\编于星期三\8点for语句示例示例1:inti=0,s=0;for(i=1;i>10;i++)s++;System.out.println("i="+i+",s="+s);示例2:inti=0,s=0;for(i=1;i<10;i++)s++;System.out.println("i="+i+",s="+s);执行结果:i=1,s=0执行结果:i=10,s=9当前第25页\共有37页\编于星期三\8点循环控制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项起每一项的分子是前一项分子与分母的和分母是前一项的分子当前第26页\共有37页\编于星期三\8点循环控制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都不是素数当前第27页\共有37页\编于星期三\8点while语句

语句格式:while(布尔表达式)

循环体含义:当表达式结果为true时,重复执行循环体。特点:先判断,再执行,循环可能一次也不执行truefalse逻辑表达式循环体循环体可以是单一语句,也可以是复合语句(用花括号括起)当前第28页\共有37页\编于星期三\8点do…while语句语句格式do

循环体while(布尔表达式);含义:重复执行循环体,直到布尔表达式为false。特点:先执行,再判断,循环至少执行一次

注意:两种格式循环体中至少有一条语句用以改变循环条件,否则会死循环true循环体布尔表达式false当前第29页\共有37页\编于星期三\8点循环控制Demo3【例补3-4】编程:输入一批非负数,当输入负数时,表示输入结束。求这批非负数据的最大值、最小值和平均值。【实验40006】读入1个正实数eps,计算并输出1-1/3+1/5-1/7+……,直到最后一项的绝对值小于eps为止(要求每一项的绝对值均大于等于eps,并以float类型输出数据)。当前第30页\共有37页\编于星期三\8点跳转语句break语句:使程序的流程从一个语句块内部跳转出来。通常在switch和循环语句中使用。continue语句:只在循环语句中使用。作用是终止当前这轮的循环,跳过本轮循环剩余的语句,直接进入下一轮循环。publicstaticvoidmain(String[]args){inti,sum;sum=0;for(i=1;i<=10;i++){if(i%2!=0)continue;sum=sum+i;}System.out.println("sum="+sum);}执行结果:sum=30当前第31页\共有37页\编于星期三\8点多重循环Multi-Loop例如:for(…;…;){//外循环开始

for(…;…;){//内循环开始

… }//内循环结束

…}//外循环结束当前第32页\共有37页\编于星期三\8点publicclassPrimes{publicstaticvoidmain(Stringargs[]){inti,j;booleanflag;

for(i=2;i<=50;i++){//外循环,i:2~50

flag=true;j=2;

while(j<=i-1&&flag){//内循环,判断素数

if(i%j==0)flag=false;j++; }

if(flag)System.out.print(i+"");}}}【例3-16】求2-50之间的素数当前第33页\共有37页\编于星期三\8点循环控制Demo3【例3-15】计算输出1!、2!、…、5!以及它们的和解题:外循环i遍历1-5内循环求每个i的阶程1!=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论