【答案】i=5<--->j=6
9.请分别用if-else语句和switch语句编写实现下列功能的程序。
某同学某门课的成绩可能的结果为1,2,3,4,5。
当成绩为1时请输出不及格;成绩为2时请输出及格;成绩为3时请输出中等;成绩为4时请输出良好;成绩为5时请输出优秀。
残骛楼諍锩瀨濟溆塹籟婭骒東。
【答案】
/*if-else描述程序*/publicclassxt020901{
publicstaticvoidmain(Stringargs[]){
intscore=4;
if(score==1){System.out.println("不及格");}elseif(score==2)
{System.out.println("及格");}
elseif(score==3)
{System.out.println("中等");}
elseif(score==4)
{System.out.println("良好");}
else{System.out.println("优秀");}
}
}
/*switch描述程序*/publicclassxt020902{
publicstaticvoidmain(Stringargs[]){
intscore=4;
switch(score)
{
case1:
System.out.println("不及格");break;
case2:
System.out.println("及格");break;
case3:
System.out.println("中等");break;
case4:
System.out.println("良好");break;
case5:
System.out.println("优秀");break;
}
}
}
10.请编写输出乘法口诀表的程序。
乘法口诀表的部分内容如下:
1*1=1
1*2=22*2=3
1*3=32*3=63*3=9
1*4=42*4=83*4=124*4=16publicclassxt0210
{
publicstaticvoidmain(Stringargs[])
{finaldoublePI=3.141592654;doublearea,r;area=PI*r*r;
System.out.println(面积="”+area);
}
}
【答案】
publicclassxt0210{
publicstaticvoidmain(Stringargs[]){
inti,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
System.out.print(j+"*"+i+"="+i*j+"");System.out.println();
}
}
}
11.请编写程序实现如下效果图。
A
B0
DEF
GHIJ
KLMN
OPQ
RS
T
【答案】
publicclassxt0211{
publicstaticvoidmain(Stringargs[]){inti,j,k,num;
charch;
num='A'-1;
for(i=1;i<=4;i++)
{
for(k=1;k<=4-i;k++)System.out.print("");
for(j=1;j<=i;j++)
{
num=num+1;ch=(char)num;
System.out.print(ch+"");
}
System.out.println();
}for(i=1;i<=4;i++)
{
for(k=1;k<=i-1;k++)System.out.print("");
for(j=1;j<=5-i;j++)
{
num=num+1;ch=(char)num;
System.out.print(ch+"");}
System.out.println();
}
}
12.分别利用for语句、while语句以及dowhile语句编写一个求和程序(即sum=1+2+3+…+n)。
酽锕极額閉镇桧猪訣锥顧荭钯。
【答案】
/*for语句实现*/
publicclassxt021201{
publicstaticvoidmain(Stringargs[]){
inti,n=100;
longsum=0;
for(i=1;i<=n;i++)sum=sum+i;
System.out.println("sum[1:
n]="+sum);
}
}
/*while语句实现*/
publicclassxt021202{
publicstaticvoidmain(Stringargs[]){
inti,n=100;
longsum=0;
i=1;
while(i<=n)
{
sum=sum+i;
i=i+1;
}
System.out.println("sum[1:
n]="+sum);
}
}
/*dowhile语句实现*/
publicclassxt021203{
publicstaticvoidmain(Stringargs[]){
inti,n=100;
longsum=0;
i=1;
do
{
sum=sum+i;
i=i+1;
}
while(i<=n);
System.out.println("sum[1:
n]="+sum);
}
13.复习break和continue语句,调试本章设计这两个语句的程序。
【答案】答案见教材<略>。
14.上机调试本章提供的输入输出语句。
【答案】答案见教材<略>。
第三章
1.选择题
(1)不允许作为类及类成员的访问控制符的是()。
A.publicB.private
C.staticD.protected
【答案】C
D.abstractvoidmethod()厦礴恳蹒骈時盡继價骚卺癩龔。
答案】A(3)Java中main()函数的值是()。
D.void
A.StringB.intC.char
【答案】D
2.改错题
(1)一个名为Hello.java程序如下:
//Hello.java程序publicclassA
{
voidf()
{System.out.println("IamA");}
}classB{}
publicclassHello
{
publicstaticvoidmain(Stringargs[])
{
System.out.println("你好,很高兴学习Java");Aa=newA();
a.f();
}
}要求:
指出错误,说明错误原因,并改正。
【答案】
错误原因:
一个程序中不可同时申明一个以上的public类。
改正措施:
将publicclassA变为classA即可
(2)类A的定义如下:
classA{voidf(){
intu=(int)(Math.random()*100);
intv,p;
if(u>50){v=9;}p=v+u;
}要求:
指出错误,说明错误原因,并改正。
【答案】
错误原因:
Java语言规定,任何变量在使用之前,必须对变量赋值。
由于u的值是由随机方
法产生的,当u<=50时,v在使用前没有赋值,此时执行p=v+u;会出现错误。
茕桢广鳓鯡选块网羈泪镀齐鈞。
改正措施:
将intv,p;变为intv=0,p;即可
(3)B.java内容如下:
classA{
intx,y;
staticfloatf(inta)
{returna;}
floatg(intx1,intx2)
{returnx1*x2;}
}
publicclassB{
publicstaticvoidmain(Stringargs[]){
Aa=newA();
A.f(3);
a.f(4);
a.g(2,5);
A.g(3,2);
}
}要求:
指出错误,说明错误原因,并改正。
【答案】
错误原因:
A.g(3,2);由于类方法不仅可以由对象调用而且还可以直接由类名调用,而实例
方法不能由类名调用。
鹅娅尽損鹌惨歷茏鴛賴縈诘聾。
改正措施:
删除A.g(3,2);或将A.g(3,2);改为a.g(3,2);
3.简答题
(1)简述面向对象程序和面向过程程序设计的异同。
(2)简述类中成员变量的分类及差异。
(3)简述类中方法的分类及差异。
(4)简述类中变量的初始化方式。
(5)简述类中成员的几种访问控制修饰符的差异,并举例说明。
(6)简述构造方法的作用。
【答案】答案见教材<略>。
第四章
1.简述Java中继承的含义及特点。
【答案】答案见教材<略>。
2.指出下列程序中的错误,请说明错误原因。
classA{
publicinta=1;
privateintb=2;
protectedintc=3;
intd=4;
publicintdispA(){returna;}
privateintdispB(){returnb;}protectedintdispC(){returnc;}intdispD(){returnd;}}publicclassBextendsA{
publicstaticvoidmain(Stringargs[]){
Bbb=newB();bb.testVisitControl();
}
publicvoidtestVisitControl(){
System.out.println(a+dispA());System.out.println(b+dispB());System.out.println(c+dispC());System.out.println(d+dispD());
}}【答案】System.out.println(b+dispB());行编辑时出现错误。
原因如下:
(1)子类B和父类A在同一包中;
(2)子类B不能继承父类的private型属性和方法。
3.根据下面程序片段,画出类和对象的内存映像图。
classA{
staticintsv1=10;
intsv2=20;
intsv3=30;
staticvoidsf1(){…}
voidf1(){…}
}
classBextendsA{
staticintsv2=30;
intv2=3;
voidf1(){…}
}
Aref1=newA();
Bref2=newB();ref1=ref2;
【答案】
B
A/svl
B/sv2
Jifl
10
30
*E***B
A
A/svlRo
4.
简述子类对象的成员初始化的方法。
【答案】答案见教材<略>。
5.简述成员变量的隐藏的含义,并举例说明。
【答案】答案见教材<略>。
6.简述方法的重载和方法的覆盖的区别,并举例说明。
【答案】答案见教材<略>。
7.列举this和super的用途。
【答案】答案见教材<略>。
8.指出下列程序运行的输出结果。
classPoint{
intx,y;
Point(){this(-1,-1);}
Point(inta,intb){x=a;y=b;}
voidshowxy(){
System.out.println(“x=”+x+”y=”+y);
}
}
publicclassreloadingExample{
publicstaticvoidmain(Stringargs[]){Pointa=newPoint();
Pointb=newPoint(1,1);
a.showxy();
b.showxy();
}
}
【答案】输出结果为:
x=-1y=-1x=1y=1
9.指出下列程序运行的输出结果。
classA{
intx=1,y=2;
doubleadd(){returnx+y;}
}
classBextendsA{
intx=10,y=20;
doubleadd(){returnsuper.x+super.y;}
}
classex2{
publicstaticvoidmain(Stringargs[]){
Aa=newA();
Bb=newB();
System.out.println("a.add="+a.add());
System.out.println("b.add="+b.add());
}
}
【答案】输出结果为:
a.add=3.0
b.add=3.0
10.简述接口和抽象类的含义,以及它们两者之间的不同。
【答案】答案见教材<略>。
第五章
1.为什么说Java多维数组是数组元素为数组的一维数组,请用事实说明。
【答案】答案见教材<略>。
2.判断下面数组的定义是否正确?
如果不正确,请改正。
(1)inta[5];
charch[5][4];
(2)inta[][]=newint[][4];
(3)intN=10;
inta=newint[N];
【答案】
(1)数组定义错。
因为数组声明时方括号中不能用数字,即不允许静态说明数组。
(2)数组定义错。
因为数组维数声明顺序应该从高到低,先声明高维,再声明低维。
(3)正确。
因为数组元素个数可以是常量,也可以是变量。
3.若int[][]a={{1,2},{3,4,5},{6,7,8},{9,10},{11,12,13,14,15}},请问a.length,a[2].length,a[3].length分别等于多少?
籟丛妈羥为贍偾蛏练淨槠挞曉。
【答案】a.length,a[2].length,a[3].length分别等于5、3、2。
4.写出下列程序的运行结果。
classA{
voidoperate(intc[]){
inti;
for(i=0;i<c.length;i++)c[i]=3*c[i];
}}publicclassArrayExample4{
publicstaticvoidmain(String[]args){
Aa=newA();intb[]={1,2,3,4};
a.operate(b);
預頌圣鉉儐歲龈讶骅籴買闥
for(inti=0;i龅。
}}【答案】运行结果为:
36912
5.写出下列程序的运行结果。
publicclassStringExample4{
publicstaticvoidmain(String[]args){
Strings1="abc";
Strings2=s1;s2+="def";s1.concat("def");
System.out.println("s1="+s1+"s2="+s2);}
}【答案】运行结果为:
s1=abcs2=abcdef
6.写出下列程序运行的结果。
publicclassStringExample5{publicstaticvoidmain(String[]args){
Strings[]={"ab","c","d"};reverse(s[0],s[1]);
System.out.println("s[0]="+s[0]+"s[1]="+s[1]);}staticvoidreverse(Strings0,Strings1){
Strings;
s=s0;s0=s1;
s1=s;
}}【答案】运行结果为:
s[0]=abs[1]=c
7.写出下列程序的运行结果。
publicclassStringExample6{
publicstaticvoidmain(String[]args){
Strings[]={"ab","c","d"};reverse(s);
System.out.println("s[0]="+s[0]+"s[1]="+s[1]);
}
staticvoidreverse(Strings[]){
Strings0;
s0=s[1];
s[1]=s[0];
s[0]=s0;
}
}
【答案】运行结果为:
s[0]=cs[1]=ab
8.写出下列程序的运行结果。
publicclassStringBufferExample3{
publicstaticvoidmain(String[]args){
StringBuffers1=newStringBuffer("AB");
StringBuffers2=newStringBuffer("CD");operate(s1,s2);
System.out.println("s1="+s1+"s2="+s2);
}
staticvoidoperate(StringBufferx,StringBuffery){渗釤呛俨匀谔鱉调硯錦鋇絨钞。
x.append(y);
x=y;
}
}
【答案】运行结果为:
s1=ABCDs2=CD
1.简述异常的含义及作用。
【答案】答案见教材<略>。
2.简述Java异常处理的机制。
【答案】答案见教材<略>。
3.简述finally块的用途,举例说明。
【答案】答案见教材<略>。
4.简述throw和throws的用途,以及两者之间的差异。
【答案】答案见教材<略>。
5.编写一个程序,自定义一个异常,并对其进行处理。
【答案】
//myException.javaimportjava.util.*;
classmyExceptionextendsException
{}
classUserTrial{
intscore;
publicUserTrial(inta){score=a;}voidshow()throwsmyException{if((score<0)||(score>100))thrownewmyException();
System.out.println("score="+score);
}
}
classxt060501{
publicstaticvoidmain(Stringargs[]){UserTrialtrial=newUserTrial(4);Scannerreader=newScanner(System.in);System.out.println("请输入分数,并按回车键确认");
intx=reader.nextInt();
trial.score=x;
System.out.println("x="+x);
try
{trial.show();}
catch(myExceptio