3章Word文档下载推荐.docx
《3章Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《3章Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
”组成的语句称为空语句
如:
for(inti=1;
i<
11;
System.out.println(i),i++)
;
//空语句
if语句(条件语句)实现2路分支结构,switch语句(多路分支语句)实现多路分支结构。
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<
b?
a:
b;
min=c<
min?
c:
min;
min="
+min);
}
注意3点:
(1)布尔表达式可以是关系表达式、逻辑表达式,但不能是整数表达式。
intx=0;
if(x)...//非法
(2)if语句必须有then子句,但可以没有else子句。
(3)if语句可嵌套。
if(a<
b)
if(b<
c)min=a;
switch语句的一般形式为:
switch(<
{
case<
常量1>
:
break;
常量2>
……
常量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:
2月份有28或29天。
break;
case3:
3月份有31天。
case4:
4月份有30天。
case5:
5月份有31天。
case6:
6月份有30天。
case7:
7月份有31天。
case8:
8月份有31天。
case9:
9月份有30天。
case10:
10月份有31天。
case11:
11月份有30天。
default:
12月份有31天。
}//endofmainmethod
}//endofclass
//用Scanner读整数,重写上述程序
importjava.util.*;
{publicstaticvoidmain(Stringargs[])
{inti=0;
Scannerbr=newScanner(System.in);
do
try
{i=br.nextInt();
catch(InputMismatchExceptione)
{br.nextLine();
System.out.print("
输入格式错误!
"
i=-1;
}while(i<
br.close();
switch(i)
{case1:
case2:
case3:
case4:
case5:
case6:
case7:
case8:
case9:
}
例3-3利用随机数发生器产生0~9之间的整数并输出(P44)。
classCh3Ex3
{publicstaticvoidmain(Stringargs[])
{intx=(int)(Math.random()*10);
//0.0≤Math.random()<
1.0
随机数x放大10倍后的整数值:
+x);
switch(x)
{case0:
case0:
case1:
case2:
case3:
case4:
case5:
case6:
case7:
case8:
//break;
Java的循环语句有三种:
(1)while语句
(2)dowhile语句
(3)for语句
它的一般格式为:
while(<
){
循环体>
例3-4计算Fibonacci数列前20项的值(P46)。
Fibonacci序列的数学定义如下:
publicclassCh3Ex4{
staticfinalintMAX=20;
publicstaticvoidmain(Stringargs[]){
intf1=0,f2=1,k=0;
Fibonacci数列前20项是:
while(k<
MAX){//循环10次
System.out.print("
+f1+"
+f2);
f1=f1+f2;
f2=f1+f2;
k+=2;
if(k%4==0)System.out.println();
//一行4个数
System.out.println();
do{
}while(<
)
例3-5输入字符,显示其Unicode码,输入#程序结束(P49例3-10)。
publicclassCh3Ex5
{staticcharc;
publicstaticvoidmain(String[]args)
{try
{do
输入1个字符并按回车,按#结束"
c=(char)System.in.read();
System.in.skip
(2);
//忽略回车及换行符
System.out.println(c+"
的Unicode的值为:
+(short)c);
while(c!
='
#'
catch(IOExceptione)
读错误!
);
程序运行结果如下:
输入字符并按回车,按#结束
a↙
a的Unicode的值为:
97
B↙
B的Unicode的值为:
66
#↙
#的Unicode的值为:
35
for循环的通用格式如下:
for(<
初始化部分>
修正表达式>
{
若循环次数可确定,一般用for语句,当循环次数不能确定一般用do语句或dowhile语句。
例3-6把按升序排列的int型数组元素按降序排列。
//Ch3Ex6.java
publicclassCh3Ex6
{inta[]={1,2,3,4,5,6,7,8,9},b;
for(inti=0,j=a.length-1;
i<
j;
i++,j--)
{b=a[i];
a[i]=a[j];
a[j]=b;
}//循环4次
System.out.println(“ReducedSorting:
”);
for(inti=0;
a.length-1;
i++)
System.out.print(a[i]+””);
该程序的运行结果为:
ReducedSorting:
987654321
在遍历数组或java.util.Collection<
E>
时,一般用增强的for循环。
一般形式:
for(SomeTypeinst:
instArr){<
其中,instArr可以是SomeType数组和各种泛型容器(列表、集合、队列等),
inst是任意的标识符
SomeType是元素的类型
采用增强的for循环(enhancedforloop)来改写上述例程。
{staticinta[]={1,2,3,4,5,6,7,8,9},b;
{for(inti=0,j=a.length-1;
i++,j--)
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)
找到第"
+m+++"
个水仙花数:
+n);
找到第1个水仙花数:
153
找到第2个水仙花数:
370
找到第3个水仙花数:
371
找到第4个水仙花数:
407
break语句、continue语句、return语句等。
Java语言不支持goto语句。
1.break语句
(1)不带标号的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;
100;
{for(intj=2;
j<
i;
j++)
{if(i%j==0)continuefirstLoop;
System.out.print(i+””);
3.return语句
使程序执行流程跳转到调用方法处。
它的格式如下:
return<
表达式的值就是被调用方法返回给调用者的值。
3.6异常处理控制语句(第6章)
语句序列>
catch(<
异常类型1>
参数1>
语句序列1>
...
异常类型n>
参数n>
语句序列n>
[finally
}]
下次课交U盘:
编写一个字符界面的Application程序,接受用户从键盘输入的10个整数,比较并输出其中的最大值和最小值。