ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句1第三章流程控制语句ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句2•3.1语句概述•3.2分支语句•3.3循环语句•3.4跳转语句•3.5常用的程序设计方法•3.6格式化的输入输出ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句31.1Java语言简介•3.1.1Java语句的分类•3.1.2结构化程序设计的三种基本流程ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句43.1.1Java语句的分类1.空语句2.表达式语句3.声明语句4.标号语句标号语句的格式为:标号:语句5.块语句6.断言语句其语法格式:assert表达式1;assert表达式1:表达式2;其中,表达式1必须是boolean表达式,表达式2则可以是任何类型。表达式1为假,抛出异常。ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句53.1.2结构化程序设计的三种基本流程•计算机算法流程,只有三种基本结构:顺序结构、选择结构、循环结构。•每种结构是单入口、单出口的。AB真假BApP循环体假真ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句6Java语言的三个显著特点1跨平台(体系结构中立)Java程序能够在网络上任何地方执行;完全统一的语言版本,实现平台无关性;字节代码与平台无关性;访问底层操作系统功能的扩展类库,不依赖于具体系统等。典型商用系统。2安全性好除了Java语言具有的许多安全特性以外,Java提供了字节码校验器、文件访问限制机制、类装载器和运行时内存布局四级安全保证机制。3面向对象面向对象的技术是当今软件开发的主流技术之一。Java语言是一个彻底的纯面向对象的程序设计语言。它具有面向对象的封装、继承和多态三大特点。ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句71.2Java程序工作原理•1.2.1Java程序工作流程•1.2.2Java虚拟机•1.2.3Java语言的平台无关性•1.2.4Java平台的分类ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句83.2.1if语句格式:if(表达式)语句•功能:首先要计算表达式,若值为真,则执行语句,否则(值为假时)结束执行if语句,执行if语句的后续语句。表达式语句truefalseProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句9【例3-1】判断两个数的最大值。•classMyMax{•publicdoublegetMax(doublea,doubleb){•doublemax;•max=a;•if(maxb){•max=b;•}•returnmax;•}•}ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句10【例3-1】判断两个数的最大值(续)•publicclassEx3_1{•publicstaticvoidmain(String[]args){•MyMaxobj=newMyMax();•System.out.println(max=+obj.getMax(3.14,3.1415926));•}•}•【模仿例3-1】判断四个数的最大值。ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句113.2.2if-else语句格式:if(表达式)语句1else语句2功能:首先要计算表达式,若值为真,则执行语句1,否则(值为假时)执行语句2。表达式语句1语句2truefalseProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句12【例3-2】闰年问题。输入一个年份,判断概念是否为闰年?•importjava.util.*;•classLeap{•publicbooleanisLeap(intyear){•if((year%4==0)&&(year%100!=0)||(year%400==0)){•returntrue;表达式语句1语句2truefalse0•}•else{•returnfalse;•}•}•}ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句13【例3-2】闰年问题。输入一个年份,判断概念是否为闰年?(续)•publicclassEx3_2{•publicstaticvoidmain(String[]args){•intyear;•System.out.println(输入一个年份:);•Scannerreader=newScanner(System.in);•year=reader.nextInt();•Leapobj=newLeap();•if(obj.isLeap(year)){•System.out.println(year+是闰年.);•}•else{•System.out.println(year+不是闰年.);•}•}•}ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句14【例3-4】设计一个四则运算的计算器•importjava.util.*;•importjava.io.*;•publicclassEx3_4{•publicstaticvoidmain(String[]args)throwsIOException{•(newCalculator()).calculate();•}•}•classCalculator{•publicvoidcalculate()throwsIOException{•doublea,b,c=0;•charop;ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句15【例3-4】设计一个四则运算的计算器(续)•System.out.println(输入2个操作数:);•Scannerreader=newScanner(System.in);•a=reader.nextDouble();•b=reader.nextDouble();•System.out.println(输入运算符);•op=(char)System.in.read();•if(op=='+')c=a+b;•if(op=='-')c=a-b;•if(op=='*')c=a*b;•if(op=='/')c=a/b;•System.out.println(a++op++b+=+c);•}•}ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句163.2.3switch语句switch语句的格式:switch(表达式){case值1:语句1;[break;]case值2:语句2;[break;]……case值N:语句N;[break;][default:语句N+1;]}功能:执行switch语句时,首先计算switch后表达式的值,然后在switch语句中寻找与该表达式的值相匹配的case值,如果找到,则执行该case后的各语句,直至遇到一个break语句为止;如果找不到匹配的case值,则执行switch的默认语句(default),直到switch语句体结束。如果找不到匹配的case值且不存在默认语句(default),则跳过switch语句体,什么也不做。ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句17switch表达式语句1语句2语句n语句…...值1值2值ndefaultcaseProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句18【例3-6】【例3-6】根据输入的百分制成绩(score),要求输出成绩等级(grade)A、B、C、D、E。90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。•importjava.util.*;•publicclassEx3_6{•publicstaticvoidmain(String[]args){•(newGrade()).toGrade();•}•}ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句19【例3-6】(续1)classGrade{publicvoidtoGrade(){intscore,m;Scannerreader=newScanner(System.in);System.out.println(输入成绩:);score=reader.nextInt();if(score0||score100){System.out.println(dataerror.);}else{m=score/10;switch(m){case9:ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句20【例3-6】(续2)case10:System.out.println(ThegradeisA.);break;case8:System.out.println(ThegradeisB.);break;case7:System.out.println(ThegradeisC.);break;case6:System.out.println(ThegradeisD.);break;default:System.out.println(ThegradeisE.);break;}}}}【改写】用switch语句设计一个四则运算的计算器。ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句213.3循环语句•3.3.1while循环语句•3.3.2do-while循环语句•3.3.3for循环语句ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句223.3.1while循环语句while语句的一般格式:[初始化]while(终止表达式){语句序列(循环体);[迭代]}功能:首先初始化,其次,计算终止表达式的值,如果其值为真(true),则执行语句序列(循环体),再执行迭代语句,然后计算终止表达式的值,并重复上述过程,直到终止表达式的值为“假”(值为false)时,退出循环,执行下一条语句。终止循环体falsetrue初始化迭代ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句23【例3-7】有一张足够大的纸,厚0.01毫米,问将它对折多少次后可以达到珠穆拉玛峰的高度(8844.43米)。•classFoldCount{•publicintgetCount(doubleh){•intn=0;•while(h8844.43){•h=2*h;•n++;•}•returnn;•}•}ProgrammingLanguageJava:西安邮电学院计算机学院——朱晓龙第三章——流程控制语句24【例3-7】(续)publicclassEx3_7{publicstaticvoidmain(String[]args){FoldCountobj;obj=newFoldCount();System.out.println(count=+obj.getCount(0.01e-3))