《第二讲控制结构》由会员分享,可在线阅读,更多相关《第二讲控制结构(56页珍藏版)》请在金锄头文库上搜索。
1、第二讲第二讲 Java语句及控制结构语句及控制结构第二讲第二讲 Java语句及控制结构语句及控制结构o Java语句语句o 选择语句选择语句o 循环语句循环语句p知识点知识点表达式语句表达式语句 复合语句复合语句if语句语句 switch语句语句 for语句语句 while语句语句 dowhile语句语句break语句语句 continue语句语句 return语句语句p重点重点选择语句和循环语句选择语句和循环语句本讲概要本讲概要1 Java语句语句o语句是指程序中的一个完整的执行单元,用来对数据语句是指程序中的一个完整的执行单元,用来对数据进行加工(完成操作任务)处理。进行加工(完成操作任务
2、)处理。oJava语句是语句是Java标识符的集合,由关键字、常量、标识符的集合,由关键字、常量、变量和表达式构成。变量和表达式构成。oJava语句分为说明性语句和操作性语句语句分为说明性语句和操作性语句。n说明性语句用来说明包和类的引入、类的声明、变说明性语句用来说明包和类的引入、类的声明、变量的声明。例如:量的声明。例如:import java.applet.Applet; public class HelloApplet extends Applet; n操作性语句有表达式语句、复合语句、选择语句和操作性语句有表达式语句、复合语句、选择语句和循环语句等。循环语句等。表达式语句表达式语句o
3、表达式后面跟一个分号表达式后面跟一个分号“;”组成表达式语句。常用组成表达式语句。常用的表达式语句有赋值语句、自加自减语句、方法调用的表达式语句有赋值语句、自加自减语句、方法调用语句等。语句等。o例如:例如:ndouble salary=100; /赋值语句naValue+; /自加语句nSystem.out.println(Hello World!); /方法调用语句复合语句复合语句o复复合合语语句句也也称称为为块块(block)语语句句,由由零零个个或或多多个个语语句用大括号句用大括号“”括起来的部分。括起来的部分。o复复合合语语句句不不需需要要以以“;”结结束束,复复合合语语句句的的右右
4、括括号号“”后后面面不不能能出出现现分分号号。执执行行复复合合语语句句时时,实实际际是是执执行行该该复复合合语语句句一一对对大大括括号号中中所所有有语语句句,也也就就是是从从语语法法上讲,无论有多少语句,都只被看成一条简单语句。上讲,无论有多少语句,都只被看成一条简单语句。o复复合合语语句句在在结结构构式式语语句句(选选择择语语句句和和循循环环语语句句)中中应应用广泛。用广泛。public class BlockDemo public static void main(String args) boolean condition = true;if (condition) / 语句块1开始 S
5、ystem.out.println(Condition is true.); /只有一条语句 /语句块1结束 else 【例2-11】复合语句示例 / 语句块2开始 System.out.println(Condition is false.);System.out.println(this is block two); /这里有两条语句 / 语句块2结束 【例2-11】复合语句示例 2 选择语句选择语句o if 语句语句o if . else语句语句o if . else . if 语句语句o switch语句语句if 语句语句oif语句的语法格式为:语句的语法格式为: if(条件表达式条件
6、表达式) 语句语句;o其功能是:如果条件表达式的值为其功能是:如果条件表达式的值为true,则执行语句;否则,该语句,则执行语句;否则,该语句不被执行。不被执行。o当满足条件表达式,需要执行多条当满足条件表达式,需要执行多条语句时,需要使用一对花括号将多语句时,需要使用一对花括号将多条语句包含起来,构成复合语句。条语句包含起来,构成复合语句。表达式表达式语句语句Afalsetrueif . else语句语句oif . else语句的语法格式为:语句的语法格式为:if (条件表达式条件表达式) ; else ;o其功能是:如果条件表达式的其功能是:如果条件表达式的值为值为true,则执行语句,则
7、执行语句1,忽,忽略略else和语句和语句2;如果条件表;如果条件表达式的值为达式的值为false,程序忽略,程序忽略语句语句1,执行,执行else后面的语句后面的语句2。 false表达式表达式语句语句1true语句语句2/找出三个整数中的最大值和最小值。找出三个整数中的最大值和最小值。 public class Max3if public static void main(String args) int a=1,b=2,c=3,max,min; if (ab) max = a; else max = b; if (cmax) max = c; System.out.println(max
8、 = +max); min = ab ? a : b; min = c= 90) grade = 优秀; else if (testscore = 80) grade = 良好; else if (testscore = 70) grade = 中等;【例2-13】使用if . elseif语句的例子else if (testscore = 60) grade = 及格; else grade =不及格; System.out.println(该学生的成绩为: + grade); 【例2-13】使用if . elseif语句的例子switch语句语句oswitch语句的定义形式为:语句的定义形
9、式为:switch ()case : ; break; case : ; break; default:;o其功能是:先计算条件表达式的值,然后根据表达式的其功能是:先计算条件表达式的值,然后根据表达式的取值与各个常量比较,如果表达式值与哪个常量相等,取值与各个常量比较,如果表达式值与哪个常量相等,就执行该常量后面的语句。就执行该常量后面的语句。 default语句语句常量常量1truefalse语句语句1;break;常量常量2truefalse语句语句2;break;常量常量ntruefalse语句语句n;break;switch表达式表达式switch结束结束switch结束结束swit
10、ch语句语句o使用使用switch语句时注意以下几点:语句时注意以下几点:ncase后面的常量必须是整型或字符型的值,且不能后面的常量必须是整型或字符型的值,且不能有相同的值。有相同的值。nswitch语句从与选择值相匹配的语句从与选择值相匹配的case标签处开始标签处开始执行,一直执行到执行,一直执行到break处(执行处(执行break将跳出将跳出switch语句)或是语句)或是switch的末尾。的末尾。n当表达式值与所有的当表达式值与所有的case标签均不匹配时,如果标签均不匹配时,如果switch中含有中含有default标签,将执行标签,将执行default标签标签后面的语句;如果
11、后面的语句;如果default标签也不存在,那么标签也不存在,那么switch中没有任何语句得到执行,直接跳出中没有任何语句得到执行,直接跳出switch语句。语句。switch语句语句 /用用week表示星期几,用表示星期几,用switch语句将语句将week星期几转换星期几转换成对应英文字符串。成对应英文字符串。 public class Week1 public static void main(String args) int week=1; System.out.print(week = +week+ ); switch (week) case 0: System.out.print
12、ln(Sunday);break; case 1: System.out.println(Monday);break; case 2: System.out.println(Tuesday);break; case 3:System.out.println(Wednesday);break;【例2-14】 switch语句示例。 case 4: System.out.println(Thursday); break; case 5: System.out.println(Friday); break; case 6: System.out.println(Saturday); break;de
13、fault: System.out.println(Data Error!); 【例2-14】 switch语句示例。3 循环语句循环语句 一个有效的循环有三个基本要素:一个有效的循环有三个基本要素:n循环条件:决定循环开始或结束的条件判断。循环条件:决定循环开始或结束的条件判断。n循环变量的初值:循环条件中的变量在使用前需要循环变量的初值:循环条件中的变量在使用前需要初始化。初始化。n循环变量的增量:在循环过程中,用于循环条件的循环变量的增量:在循环过程中,用于循环条件的变量需要不断改变。变量需要不断改变。ofor 语句语句owhile 语句语句odowhile 语句语句obreak 语句语
14、句ocontinue语句语句3 循环语句循环语句for 语句语句ofor 语句的一般形式为:语句的一般形式为: for( 表达式表达式1;表达式;表达式2;表达式;表达式3 ) 语句序列;语句序列;/循环体循环体 ofor 语句执行过程语句执行过程 先求解表达式先求解表达式1。求解表达式求解表达式2,若其值为,若其值为true,则执,则执行循环体,然后执行下面第行循环体,然后执行下面第步;若其步;若其值为值为false,则结束循环,转到第,则结束循环,转到第步。步。求解表达式求解表达式3。转回上面第转回上面第步继续执行。步继续执行。循环结束,执行循环结束,执行for语句下面的一个语语句下面的一
15、个语句。句。false表达式表达式1表达式表达式2表达式表达式3true循环体循环体for 语句语句 /求出个、十、百、千位数字的求出个、十、百、千位数字的4次方的和等于该数本身次方的和等于该数本身的所有四位数。的所有四位数。 public class ForTest public static void main(String args) System.out.println(“各位数字的4次方的和等于 该数本身的四位数有:);for(int n=1000;n1.e-8)d*=x;d/=n;sum+=d;n+;【例2-16】 while语句示例。 System.out.println(x=+
16、x+ sum=+sum); 【例2-16】 while语句示例。public class WhileTest2 public static void main(String args) int x=5,n=1;double sum=0,d=1.0;dod*=x;d/=n;sum+=d;n+; while(d1.e-8); System.out.println(x=+x+ sum=+sum); 【例2-16】 dowhile语句示例。break 语句语句obreak语句用在循环结构中和语句用在循环结构中和switch语句中,允许语句中,允许从循环体内部跳出或从从循环体内部跳出或从switch语句
17、的语句的case子句中跳子句中跳出。出。 o在不带标号的在不带标号的break语句:语句:break; 功能:功能:跳出它所在的循环(只能跳出一重循环),并跳出它所在的循环(只能跳出一重循环),并从该循环的后继语句开始继续执行。从该循环的后继语句开始继续执行。o带标号的带标号的break语句:语句: break 标号标号; 功能:功能:从多重循环体的内部跳出标号所标志的那层循从多重循环体的内部跳出标号所标志的那层循环,即结束标号所标志的那层循环,并从标号标志的环,即结束标号所标志的那层循环,并从标号标志的那层循环后面的语句开始继续执行。那层循环后面的语句开始继续执行。 break 语句语句 /
18、求求1+2+3+100的累加和,当和大于的累加和,当和大于2000时输出这时输出这个数。个数。public class BreakTest1 public static void main(String args) int sum=0,i;for(i=1;i2000) break; System.out.println(当加到 +i+ 时累加和为+sum+大于2000了);【例2-17】 break语句示例1。 /编写应用程序,程序运行后,从命令行输入一个正整编写应用程序,程序运行后,从命令行输入一个正整数,回车后输出小于等于该整数的所有素数。数,回车后输出小于等于该整数的所有素数。 impo
19、rt java.io.*;public class BreakTest public static void main(String args) throws IOExceptionString str;BufferedReader buf;int k;buf=new BufferedReader (new InputStreamReader(System.in);【例2-18】 break语句示例2。 System.out.println(请输入整数,回车后求小于等于该整数的所有素数:);str=buf.readLine();k=Integer.parseInt(str);System.ou
20、t.println(2到+k+之间的所有素数:);for(int i=2;i=k;i+) if( isPrime(i)System.out.print(i+t); 【例2-18】 break语句示例。static boolean isPrime(int n)boolean b=true;for ( int k=2; k=n/2; k+)if(n%k=0)b=false;break;return b;【例2-18】 break语句示例。 /运行该程序,正常情况下可以从键盘接受运行该程序,正常情况下可以从键盘接受9个输入字个输入字符,但当输入符,但当输入b按回车键,按回车键,break lab1语
21、句就会结束二语句就会结束二重循环。重循环。 public class BreakTest2 public static void main(String args) throws java.io.IOExceptionchar ch;lab1: /此处为标号标识符for(int i=0;i3;i+) for(int j=0;j3;j+)ch=(char)System.in.read();System.in.skip(2);【例2-19】 代标号break语句示例。if(ch=b)break lab1; /跳到标号标识处if(ch=c) System.out.println(继续); Syste
22、m.out.println(结束二重循环); 【例2-19】 代标号break语句示例。continue语句语句ocontinue语句终止当前这一轮循环,跳到下一轮循环语句终止当前这一轮循环,跳到下一轮循环并执行。而并执行。而break语句跳出整个循环;语句跳出整个循环;o不带标号的不带标号的continue语句:语句: continue; 功能:功能:跳过本轮循环的剩余语句,进入循环的下一轮。跳过本轮循环的剩余语句,进入循环的下一轮。o带标号的带标号的continue语句:语句: continue 标号标号; 功能:功能:从多重循环的内层循环跳到外层循环,执行标从多重循环的内层循环跳到外层循
23、环,执行标号所标示的循环的下一轮。号所标示的循环的下一轮。 continue语句语句 /输出输出19中除中除6以外所有偶数的平方值。以外所有偶数的平方值。 public class CTest1 public static void main(String args) for(int i=2;i=9;i+=2)if(i=6) continue;System.out.println(i+ 的平方 = +i*i); 【例2-20】 continue语句示例。 /程序运行后,从命令行输入一个正整数,回车后输出程序运行后,从命令行输入一个正整数,回车后输出小于等于该整数的所有素数。小于等于该整数的所有
24、素数。(即用(即用continue语句实现语句实现例例2-18) import java.io.*;public class ContinueTest public static void main(String args) throws IOExceptionString str;BufferedReader buf;int k;buf=new BufferedReader (new InputStreamReader(System.in);【例2-21】代标号continue语句示例。System.out.println(请输入整数,回车后求小于等于该整数的所有素数:);str=buf.r
25、eadLine();k=Integer.parseInt(str);System.out.println(2到+k+之间的所有素数:); 【例2-21】代标号continue语句示例。/外层循环对2k的数,逐个判断是否素数。 next:for(int i=2;i=k;i+) /内层循环判断外层循环给定的数i是否为素数 for(int j=2;j=i/2;j+) /如果i有因子,则不是素数;跳转并判断下一个iif(i%j=0)continue next; System.out.print(i+t); 【例2-21】代标号continue语句示例。return语句语句oreturn语句用在方法定义
26、中,当程序执行到方法体中的语句用在方法定义中,当程序执行到方法体中的return语句时,从当前方法中退出,返回到调用该方法的语句时,从当前方法中退出,返回到调用该方法的语句处。语句处。oreturn语句有带参数和不带参数两种形式语句有带参数和不带参数两种形式n带参数形式的带参数形式的return语句退出该方法并返回一个值。语句退出该方法并返回一个值。n不带参数形式的不带参数形式的return语句,其方法要用语句,其方法要用void声明,声明,说明不需要返回值,也可以省略不带参数形式的说明不需要返回值,也可以省略不带参数形式的return语句,当程序执行到这个方法的最后一条语句语句,当程序执行到
27、这个方法的最后一条语句时,遇到方法结束标志时,遇到方法结束标志就自动返回到调用这个方法的就自动返回到调用这个方法的程序中。程序中。o带参数的带参数的return语句格式为:语句格式为: return 表达式表达式; 功能:功能:把表达式的值计算出来并返回到程序中调用该把表达式的值计算出来并返回到程序中调用该方法的地方,从调用这个方法的语句之后继续执行程方法的地方,从调用这个方法的语句之后继续执行程序。序。return语句语句 /输出给出二个圆的半径,可以通过引用输出给出二个圆的半径,可以通过引用area方法由参方法由参数调用求出圆的面积值。数调用求出圆的面积值。public class Cir
28、cleArea final static double PI=3.14159; public static void main(String args) double r1=8.0,r2=5.5; System.out.println(半径为+r1+的圆的面积=+area(r1); System.out.println(半径为+r2+的圆的面积=+area(r2);【例2-22】 带参数的return语句示例 static double area(double r) return(PI*r*r);【例2-22】 带参数的return语句示例nJava语句语句n选择语句选择语句n循环语句循环语句知识小结知识小结课堂练习课堂练习o2.4 程序分析题o2.5 写出以下程序运行结果练习题练习题o2.1 选择题 (3)、(6)、(8)o2.2 填空题 o2.6 编程题 (2)、(4)、(5)谢谢谢谢!