3章.docx
- 文档编号:6066083
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:12
- 大小:23.28KB
3章.docx
《3章.docx》由会员分享,可在线阅读,更多相关《3章.docx(12页珍藏版)》请在冰豆网上搜索。
3章
第3章Java的语句
3.1概述
3.2简单语句
3.2.1声明语句
3.2.2表达式语句和调用方法语句
3.2.3复合语句(块语句)
3.2.4空语句
3.3分支语句
3.3.1if语句
3.3.2switch语句
3.4循环语句
3.4.1while语句
3.4.2do-while语句
3.4.3for语句
3.5跳转语句
3.6异常处理控制语句(见第6章)
第3章Java的语句
3.1概述
按照功能及结构,Java语句主要可分为简单语句、分支语句、循环语句、跳转语句、异常处理语句等。
3.2简单语句
最简单的语句有声明语句、表达式语句、方法调用语句、复合语句和空语句。
3.2.1声明语句
intx=1,y=0;
3.2.2表达式语句和方法调用语句
<表达式>;
如:
x=5;
System.exit(0);//调用方法语句,也是表达式语句
3.2.3复合语句(块语句)
把多个语句用花括号{}括起来组成的一个语句称复合语句。
其一般形式为:
{<语句1>;
<语句2>;
...
<语句n>;
}
3.2.4空语句
只有分号“;”组成的语句称为空语句
如:
for(inti=1;i<11;System.out.println(i),i++)
;//空语句
3.3分支语句
if语句(条件语句)实现2路分支结构,switch语句(多路分支语句)实现多路分支结构。
3.3.1if语句
if语句的一般形式是:
if(<布尔表达式>)
<语句块1>
[else<语句块2>]
例31找出3个整数中的最大值和最小值(P40,例3-1)。
publicclassCh3Ex1
{staticintmax,min,a=1,b=2,c=3;
publicstaticvoidmain(Stringargs[])
{if(a>b)max=a;
elsemax=b;
if(c>max)max=c;
System.out.println("max="+max);
min=a
a:
b;
min=c c: min; System.out.println("min="+min); } } 注意3点: (1)布尔表达式可以是关系表达式、逻辑表达式,但不能是整数表达式。 如: intx=0;... if(x)...//非法 (2)if语句必须有then子句,但可以没有else子句。 (3)if语句可嵌套。 如: if(a if(b 3.3.2switch语句 switch语句的一般形式为: switch(<表达式>) { case<常量1>: <语句1>;break; case<常量2>: <语句2>;break; …… case<常量n>: <语句n>;break; [default: <语句n+1>;] } 注意: switch后的表达式必须是byte、short、char、int或enum型。 下面是2个例子。 例3-2编写一个Application程序,接受用户输入的一个1-12之间的整数(如果输入的数据不满足这个条件,则要求用户重新输入),利用switch语句输出对应月份的天数。 importjava.io.*; publicclassCh3Ex2 {staticinti=0; publicstaticvoidmain(Stringargs[]) {do {System.out.println("请输入1~12之间的一个整数: "); BufferedReaderbr= newBufferedReader(newInputStreamReader(System.in)); try {Strings=br.readLine();i=Integer.parseInt(s);} catch(IOExceptionioe) {System.err.println(ioe.toString()); System.exit(0); } catch(NumberFormatExceptionnfe) {System.out.println("输入格式错误。 ");i=-1;} }while(i<1||i>12); switch(i) {case1: System.out.println("1月份有31天。 ");break; case2: System.out.println("2月份有28或29天。 ");break; case3: System.out.println("3月份有31天。 ");break; case4: System.out.println("4月份有30天。 ");break; case5: System.out.println("5月份有31天。 ");break; case6: System.out.println("6月份有30天。 ");break; case7: System.out.println("7月份有31天。 ");break; case8: System.out.println("8月份有31天。 ");break; case9: System.out.println("9月份有30天。 ");break; case10: System.out.println("10月份有31天。 ");break; case11: System.out.println("11月份有30天。 ");break; default: System.out.println("12月份有31天。 "); } }//endofmainmethod }//endofclass //用Scanner读整数,重写上述程序 importjava.util.*; publicclassCh3Ex2 {publicstaticvoidmain(Stringargs[]) {inti=0;Scannerbr=newScanner(System.in); do {System.out.println("请输入1~12之间的一个整数: "); try {i=br.nextInt();} catch(InputMismatchExceptione) {br.nextLine();System.out.print("输入格式错误! ");i=-1;} }while(i<1||i>12);br.close(); switch(i) {case1: System.out.println("1月份有31天。 ");break; case2: System.out.println("2月份有28或29天。 ");break; case3: System.out.println("3月份有31天。 ");break; case4: System.out.println("4月份有30天。 ");break; case5: System.out.println("5月份有31天。 ");break; case6: System.out.println("6月份有30天。 ");break; case7: System.out.println("7月份有31天。 ");break; case8: System.out.println("8月份有31天。 ");break; case9: System.out.println("9月份有30天。 ");break; case10: System.out.println("10月份有31天。 ");break; case11: System.out.println("11月份有30天。 ");break; default: System.out.println("12月份有31天。 "); } }//endofmainmethod }//endofclass 例3-3利用随机数发生器产生0~9之间的整数并输出(P44)。 classCh3Ex3 {publicstaticvoidmain(Stringargs[]) {intx=(int)(Math.random()*10);//0.0≤Math.random()<1.0 System.out.println("随机数x放大10倍后的整数值: "+x); switch(x) {case0: System.out.println("case0: "+x);break; case1: System.out.println("case1: "+x);break; case2: System.out.println("case2: "+x);break; case3: System.out.println("case3: "+x);break; case4: System.out.println("case4: "+x);break; case5: System.out.println("case5: "+x);break; case6: System.out.println("case6: "+x);break; case7: System.out.println("case7: "+x);break; case8: System.out.println("case8: "+x);break; default: System.out.println("default: "+x);//break; } } } 3.4循环语句 Java的循环语句有三种: (1)while语句 (2)dowhile语句 (3)for语句 3.4.1while语句 它的一般格式为: while(<布尔表达式>){ <循环体> } 例3-4计算Fibonacci数列前20项的值(P46)。 Fibonacci序列的数学定义如下: publicclassCh3Ex4{ staticfinalintMAX=20; publicstaticvoidmain(Stringargs[]){ intf1=0,f2=1,k=0; System.out.println("Fibonacci数列前20项是: "); while(k System.out.print(""+f1+""+f2); f1=f1+f2; f2=f1+f2; k+=2; if(k%4==0)System.out.println();//一行4个数 } System.out.println(); } } 3.4.2do-while语句 它的一般格式为: do{ <循环体> }while(<布尔表达式>) 例3-5输入字符,显示其Unicode码,输入#程序结束(P49例3-10)。 importjava.io.*; publicclassCh3Ex5 {staticcharc; publicstaticvoidmain(String[]args) {try {do {System.out.println("输入1个字符并按回车,按#结束"); c=(char)System.in.read(); System.in.skip (2);//忽略回车及换行符 System.out.println(c+"的Unicode的值为: "+(short)c); } while(c! ='#'); } catch(IOExceptione) {System.out.println("读错误! ");} } } 程序运行结果如下: 输入字符并按回车,按#结束 a↙ a的Unicode的值为: 97 输入字符并按回车,按#结束 B↙ B的Unicode的值为: 66 输入字符并按回车,按#结束 #↙ #的Unicode的值为: 35 3.4.3for语句 for循环的通用格式如下: for(<初始化部分>;<布尔表达式>;<修正表达式>) { <循环体> } 注意: 若循环次数可确定,一般用for语句,当循环次数不能确定一般用do语句或dowhile语句。 下面是2个例子。 例3-6把按升序排列的int型数组元素按降序排列。 //Ch3Ex6.java publicclassCh3Ex6 {publicstaticvoidmain(Stringargs[]) {inta[]={1,2,3,4,5,6,7,8,9},b; for(inti=0,j=a.length-1;i {b=a[i];a[i]=a[j];a[j]=b;}//循环4次 System.out.println(“ReducedSorting: ”); for(inti=0;i System.out.print(a[i]+””); } } 该程序的运行结果为: ReducedSorting: 987654321 注意: 在遍历数组或java.util.Collection 一般形式: for(SomeTypeinst: instArr){<循环体>} 其中,instArr可以是SomeType数组和各种泛型容器(列表、集合、队列等), inst是任意的标识符 SomeType是元素的类型 采用增强的for循环(enhancedforloop)来改写上述例程。 publicclassCh3Ex6 {staticinta[]={1,2,3,4,5,6,7,8,9},b; publicstaticvoidmain(Stringargs[]) {for(inti=0,j=a.length-1;i {b=a[i];a[i]=a[j];a[j]=b;} System.out.println(“ReducedSorting: ”); for(intelement: a)//JDK1.5上才支持 System.out.print(element+””); System.out.println(); } } 例3-7编写Application程序找出所有的水仙花数并输出。 水仙花数是三位数,它的各位数字的立方和等于这个三位数本身。 例如371=33+73+13,371就是一个水仙花数。 publicclassCh3Ex7/Ch3Ex7.java有4个水仙花数 {publicstaticvoidmain(String[]args) {inti,j,k,m=1; for(intn=100;n<1000;n++)//循环900次 {i=n/100;//百位数 k=n%10;//个位数 j=(n-i*100)/10;//十位数 if(Math.pow(i,3)+Math.pow(j,3)+Math.pow(k,3)==n) System.out.println("找到第"+m+++"个水仙花数: "+n); } } } 程序运行结果如下: 找到第1个水仙花数: 153 找到第2个水仙花数: 370 找到第3个水仙花数: 371 找到第4个水仙花数: 407 3.5跳转语句 break语句、continue语句、return语句等。 Java语言不支持goto语句。 1.break语句 (1)不带标号的break语句 break;//用于退出当前的循环语句或switch语句。 (2)带标号的break语句 其一般形式为: break<标号名>;//语句块的标号 带标号的break语句表示跳出标号注明的那个语句块,进入后面的语句。 如: for(.......) {lable1: for(......) {for(......) {.......... breaklable1; ......//该语句序列不被执行 } .......//该语句序列不被执行 } .......//该语句序列被执行 } 2.continue语句 (1)不带标号的continue语句 continue;//结束本次循环,进入下一轮循环。 (2)带标号的continue语句 其一般形式为: continue标号名;//外层循环语句开始处的标号 带标号的continue语句使程序执行流程直接转入标号标明循环的下一轮循环。 下面是一个求1到100之间的所有素数(prime)的程序段,使用了带标号的continue语句。 完整的源代码见教材P57。 firstLoop: for(inti=1;i<100;i++) {for(intj=2;j {if(i%j==0)continuefirstLoop;} System.out.print(i+””); } 3.return语句 使程序执行流程跳转到调用方法处。 它的格式如下: return<表达式>; 表达式的值就是被调用方法返回给调用者的值。 3.6异常处理控制语句(第6章) try {<语句序列>} catch(<异常类型1><参数1>) {<语句序列1>} ... catch(<异常类型n><参数n>) {<语句序列n>} [finally {<语句序列>}] 下次课交U盘: 编写一个字符界面的Application程序,接受用户从键盘输入的10个整数,比较并输出其中的最大值和最小值。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 3章.docx