3章.docx

上传人:b****5 文档编号:6066083 上传时间:2023-01-03 格式:DOCX 页数:12 大小:23.28KB
下载 相关 举报
3章.docx_第1页
第1页 / 共12页
3章.docx_第2页
第2页 / 共12页
3章.docx_第3页
第3页 / 共12页
3章.docx_第4页
第4页 / 共12页
3章.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

3章.docx

《3章.docx》由会员分享,可在线阅读,更多相关《3章.docx(12页珍藏版)》请在冰豆网上搜索。

3章.docx

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循环。

一般形式:

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模板 > 中国风

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1