Java基础教程第3版习题答案.docx

上传人:b****3 文档编号:3938443 上传时间:2022-11-26 格式:DOCX 页数:41 大小:184.73KB
下载 相关 举报
Java基础教程第3版习题答案.docx_第1页
第1页 / 共41页
Java基础教程第3版习题答案.docx_第2页
第2页 / 共41页
Java基础教程第3版习题答案.docx_第3页
第3页 / 共41页
Java基础教程第3版习题答案.docx_第4页
第4页 / 共41页
Java基础教程第3版习题答案.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

Java基础教程第3版习题答案.docx

《Java基础教程第3版习题答案.docx》由会员分享,可在线阅读,更多相关《Java基础教程第3版习题答案.docx(41页珍藏版)》请在冰豆网上搜索。

Java基础教程第3版习题答案.docx

Java基础教程第3版习题答案

部分习题答案

第一章

答案】答案见教材<略>。

第二章

4.如果intx=1,y=-2,n=10;那么,表达式x+y+(--n)*(x>y&&x>0?

(x+1):

y)的值是什么类型?

结果是多少?

【答案】int型,值为17。

5.如果intk=1,那么'H'+k的类型是什么?

下面语句是否存在差错?

如果有,请改正。

(1)intk=1;

(2)charch1,ch2;

(3)ch1='H'+k;

(4)ch2=98;

【答案】'H'+k的类型为int型。

(3)有错。

’H'+k为int型,ch1为char型,将高精度赋给低精度类型时必须实行强制转换。

6.请指出下面程序在编译时是否会出现错误。

如果有,请改正。

publicclassdoubleTointExample{publicstaticvoidmain(Stringargs[]){inta;

doubleb=1,c=2;a=(int)(b+c);System.out.println("a="+a);

}

}

【答案】无错误。

输出结果:

a=3

7.请指出执行完下面程序后x、y和z的输出值是多少?

请上机验证。

publicclassdoubleTointExample{

publicstaticvoidmain(Stringargs[]){intx,y,z;

x=1;

y=2;

z=(x+y>3?

x++:

++y);System.out.println("x="+x);System.out.println("y="+y);System.out.println("z="+z);

}

}

【答案】

x=1

y=3

z=3

8.请指出下面程序片段输出的结果是什么。

inti=1,j=10;

do

{if(i++>--j)break;

}while(i<5);

System.out.println(“i=””+”+“j=”+j);

【答案】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=16

publicclassxt0210{

publicstaticvoidmain(Stringargs[])

{finaldoublePI=3.141592654;doublearea,r;area=PI*r*r;

System.out.println("面积=”+area);

}

【答案】

publicclassxt0210{

publicstaticvoidmain(Stringargs[]){

 

for(i=1;iv=9;i++)

for(j=1;j<=i;j++)

System.out.print(j+"*"+i+"="+i*j+"");

System.out.printlnO;

11.请编写程序实现如下效果图。

DGK

O

FJN

Q

S

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();

for语句'While语句以及dowhile语句编写一个求和程序(即sum=1+2+3+…+n)。

}}12.分别利用【答案】/*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);

}

}

语句实现*/

/*whilepublicclassxt021202{

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

{

i=i+1;

}

while(i<=n);

System.out.println("sum[1:

n]="+sum);

2x3-4x2+3X-6=0

参考答案:

〃程序名称:

xt0213.java

//功能:

方程求解的应用

//2*x*x*x-4*x*x+3*x-6=0

importjava.io.*;//引入类库

publicclassxt0213{//定义类

publicstaticvoidmain(Stringargs[]){//定义main方法

doublex0=0.1,x,eps=0.000001;

x=(-2*x0*x0*x0+4*x0*x0+6)/3;

while((x-x0)>eps)

{

x0=x;

x=(-2*x0*x0*x0+4*x0*x0+6)/3;

}

System.out.printin(”方程的跟="+x);

14、题目判断3-1000之间有多少个素数,并输出所有素数。

}

System.out.println("素数个数是:

"+count);}

}

if(year<0||month<0||month>12||day<0||day>31){System.out.println("输入错误,请重新输入!

");e=1;

}

}while(e==1);

for(inti=1;i

switch(i){case1:

case3:

case5:

case7:

case8:

case10:

case12:

days=31;break;

case4:

case6:

case9:

days=30;

break;

case2:

days=28;

if((year%400==0)||(year%4==0&&year%100!

=0)){days=29;

}

break;

}d=d+days;

}

System.out.println(year+"-"+month+"-"+day+"是这年的第"+(d+day)+"天。

");}

}

classInputData{

publicintinputInt(){intvalue=0;

Scanners=newScanner(System.in);

value=s.nextInt();returnvalue;

}

}

12.复习break和continue语句,调试本章设计这两个语句的程序。

【答案】答案见教材<略>。

第三章

1.选择题

(1)不允许作为类及类成员的访问控制符的是()。

A.publicB.private

C.staticD.protected

【答案】C

(2)

()。

B.publicvoidmethod()D.abstractvoidmethod()

为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为

A.staticvoidmethod()

C.finalvoidmethod()

【答案】A

)。

⑶Java中main()函数的值是(

A.StringB.int

【答案】D

2.改错题

(1)一个名为Hello.java程序如下:

//Hello.java程序

publicclassA

{

voidf()

{System.out.println("IamA");}

}classB

{}publicclassHello

{

publicstaticvoidmain(Stringargs[]){

System.out.println("你好,很高兴学习Aa=newA();

a.f();

Java");

}要求:

【答案】错误原因:

一个程序中不可同时申明一个以上的改正措施:

将publicclassA变为classA即可

(2)类A的定义如下:

classA{voidf(){

intu=(int)(Math.random()*100);

intv,p;if(u>50){v=9;}p=v+u;

指出错误,说明错误原因,并改正。

public类。

 

Java语言规定,任何变量在使用之前,

当u<=50时,v在使用前没有赋值,此时执行

将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);

必须对变量赋值。

由于u的值是由随机方

p=v+u;会出现错误。

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)

4.编程题

1)定义一个长方形类myBox并在另一类中使用,其中myBox类包含长length和宽width

两个成员变量,和计算面积、周长、修改长length和宽width等方法。

publicclassTest1{

publicstaticvoidmain(Stringargs[]){

myBoxobj=newmyBox();

intx=10,y=20;

obj.setvalue(x,y);

System.out.println("width="+obj.width+"length="+obj.length);

System.out.println("周长="+obj.circle());

System.out.println("面积="+obj.area());

intwidth,length;

voidsetvalue(intwidth,intlength)

this.width=width;

this.length=length;

intcircle()

return2*(width+length);

intarea()

returnwidth*length;

2)利用递归输入如下图形。

###################

###############

###########

#######

###

程序如下所示。

//程序名称:

Je030515.java//功能:

利用递归输出特定图形classRecursionApp2{

voidoutput(charch,intk){if(k>0){

System.out.print(ch);

output(ch,k-1);

}

}

voidshow(charch,intm,intn){if(n>0){output('',m);output(ch,n);System.out.println();

}

}

}

publicclassJe030515{

publicstaticvoidmain(Stringargs[]){

RecursionApp2obj=newRecursionApp2();obj.show('#',4,19);

}

}

3)

定义满足以下要求的复数类Complex:

Complex():

构造函数,将复数的实部和虚部都置0

Complex(intr,inti):

构造函数,形参r为实部的初值,i为虚部的初值。

addComplex(Complexa):

计算当前复数对象与形参复数对象相加。

编写一个完整的JavaApplication程序使用复数类Complex验证两个复数1+2i和3+4i相加产生一个新的复数4+6i。

参考答案:

Complex{

intRealPart;

intImagePart;

Complex(){

RealPart=0;

ImagePart=0;

Complex(intx,inty){

RealPart=x;

ImagePart=y;

addComplex(Complexc1){

RealPart=RealPart+c1.RealPart;

ImagePart=ImagePart+c1.ImagePart;

publicclassxt020902{

publicstaticvoidmain(Stringargs[]){

Complexc1=newComplex(1,2);

Complexc2=newComplex(1,2);

System.out.print(“复数c1的实部=”+c1.RealPart+”虚部=”+c1.ImagelPart)

System.out.print(“复数c2的实部=”+c1.RealPart+”虚部=”+c1.ImagelPart)c1.addComplex(c2);

System.out.print(“复数c1=c1+c2的实部=”+c1.RealPart+”虚部=”+c1.ImagelPart)

==

X=axc+bxd

(3)定义一个二维向量<a,b>类,其中a、b为其属性,主要操作为:

向量相加:

向量相减:

向量内积:

编程定义该类,并使用该类。

参考答案:

//程序名称:

Java030801.java//目的:

演示自定义类及其如何使用classMyVector{

}void

floatx,y;//表示向量中的x,ymyVector(floatx,floaty){this.x=x;this.y=y;

setVector(floatx,floaty){this.x=x;this.y=y;

}

//向量相加+=voidaddVector(myVectorv1,myVectorv2){

this.x=v1.x+v2.x;

}

//向量相减-=voidminusVector(myVectorv1,myVectorv2){

this.x=v1.x-v2.x;this.y=v1.y-v2.y;

}

//向量内积-vc,d>=axc+bxdfloatmultVector(myVectorv1){

returnthis.x*v1.x+this.y*v1.y;

}

//显示向量vx,y>voidshowVector(){

System.out.println("vx,y>="+"v"+x+","+y+">");}

}publicclassJava030801{publicstaticvoidmain(Stringargs[]){

MyVector(1,2);

MyVector(3,4);

MyVector(0,0);

MyVectora1=new

MyVectora2=new

MyVectora3=newa1.showVector();a2.showVector();a3.addVector(a1,a2);a3.showVector();a3.minusVector(a1,a2);a3.showVector();

第四章

1.简述Java中继承的含义及特点。

【答案】答案见教材<略>。

2.

returna;}

returnb;}

{returnc;}

请说明错误原因。

指出下列程序中的错误,classA{publicinta=1;privateintb=2;protectedintc=3;intd=4;publicintdispA(){privateintdispB(){protectedintdispC()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());

}

}【答案】

(1)子类

(2)子类

System.out.println(d+dispD());

System.out.println(b+dispB());行编辑时出现错误。

原因如下:

B和父类A在同一包中;

B不能继承父类的private型属性和方法。

3.根据下面程序片段,画出类和对象的内存映像图。

classA{

…}

staticintsv1=10;intsv2=20;intsv3=30;staticvoidsf1(){voidf1(){…}}classBextendsA{

staticintsv2=30;intv2=3;voidf1(){…}}Aref1=newA();Bref2=newB();ref1=ref2;

答案】

A/svlI10I

B/sv2I30I

sfl

refl

A/svl

A/sv2

ref2

B/v2

4.简述子类对象的成员初始化的方法。

【答案】答案见教材<略>。

A/svlI10I

sH

J

5.简述成员变量的隐藏的含义,并举例说明。

【答案】答案见教材<略>。

6.简述方法的重载和方法的覆盖的区别,【答案】答案见教材<略>。

7.列举this和super的用途。

【答案】答案见教材<略>。

:

A

svl1

11

sv2

JO

n

4■+++I

并举例说明。

8.指出下列程序运行的输出结果。

classPoint{

intx,y

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

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

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