Java程序设计教程(第三版)课后习题答案_第1页
Java程序设计教程(第三版)课后习题答案_第2页
Java程序设计教程(第三版)课后习题答案_第3页
Java程序设计教程(第三版)课后习题答案_第4页
Java程序设计教程(第三版)课后习题答案_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

参考答案

第1章

1.Java语言有哪些主要特点?

平台独立性

安全性

多线程

网络化

面向对象

2.Java编程语言有哪四种不同的平台?

Java编程语言有四种平台:Java标准版(JavaSE)、Java企业版(JavaEE)、Java微

型版(JavaME)和JavaFX。所有Java都由Java虚拟机(VM)和应用程序编程接口(API)

组成。Java虚拟机是一个用于特定硬件和软件平台的程序,它运行Java技术应用程序。

API是一组软件组件,可用于创建其他软件组件或应用程序。每个Java平台都提供了一个

虚拟机和一个API,这使得为该平台编写的应用程序可以在具有Java编程语言所有优点的

任何兼容系统上运行:平台独立性、功能强大、稳定性、易于开发和安全。

JavaSE

当大多数人想到Java编程语言时,他们会想到JavaSEAPI,JavaSE的API提供了

Java编程语言的核心功能。它定义了从Java编程语言的基本类型和对象到用于网络、安

全、数据库访问、图形用户界面(GUI)开发和XML解析的高级类的所有内容。除了核心

API之外,JavaSE平台还包括虚拟机、开发工具、部署技术以及Java技术应用程序中常

用的其他类库和工具包。

JavaEE

JavaEE平台构建在JavaSE平台之上。JavaEE平台为开发和运行大规模、多层、可

扩展、可靠和安全的网络应用程序提供了API和运行时环境。

JavaME

JavaME平台提供了一个API和一个小型虚拟机,用于在小型设备(如手机)上运行

Java编程语言应用程序。该API是JavaSEAPI的一个子集,以及对小型设备应用程序开

发有用的特殊类库。JavaME应用程序通常是JavaEE平台服务的客户端。

JavaFX

JavaFX是一个使用轻量级用户界面API创建富Internet应用程序的平台。JavaFX应

用程序使用硬件加速的图形和媒体引擎来利用更高性能的客户端和现代外观以及用于连接

到网络数据源的高级APLJavaFX应用程序可能是JavaEE平台服务的客户端。

3.JavaApplication的开发步骤有哪些?

JavaApplication的开发步骤:

(1)下载JDK软件并安装;

(2)配置相应的环境变量(path和classpath);

(3)编写Java源程序(文本编辑器或集成开发环境IDE);

(4)编译Java源程序,得到字节码文件(javac*.java);

(5)执行字节码文件(java字节码文件名)。

4.什么是环境变量?设置环境变量的主要目的是什么?

环境变量的配置主要是为了进行“寻径”,即让程序能找到它需要的文件,所以设置的

内容就是一些路径。

5.不参考书本,试着编写一个简单的JavaApplication程序,实现在屏幕上输出"Welcome

toJava”字符串,并对该程序进行编译和运行。

publicclassHello{

publicstaticvoidmain(Stringargs[])

(

System.out.println("WelcometoJava");

6.编写一个JavaApplication程序,实现分行显示字符串"Welcomet。Java”中的3个单

词。

publicclassHello{

publicstaticvoidmain(Stringargs[])

(

System.out.println("Welcome");

Systeni.out.println("tO'*);

System.out.prinilnC'Java");

)

}

第2章

1.Java语言对于合法标识符的规定是什么?指出以下哪些为合法标识符。

aa23a*a_a$ainta%

在Java中,标识符必须以字母、美元符号或者下划线打头,后接字母、数字、下划线

或美元符号串。另外,Java语言对标识符的有效字符个数基本不做限定。

合法的标识符:aa2_a$a

2.变量的涵义是什么?变量名与变量值的关系?

在程序执行过程中其值可以发生改变的量,称为变量,它本质上是内存分配的一小块存

储空间。每个变量都必须有对应的名称来标识它,即变量名,而变量空间所存放的数据则为

变量值。

3.Java语言提供哪些基本的数据类型,为什么要提供这些不同的数据类型?

布尔型:boolean

整型:byte、short、int以及long

浮点型(实型):float以及double

字符型:char

数据类型代表了数据的存储格式和处理方式,有了数据类型,程序就能够存储和处理整

数、实数、字符以及布尔值等。

4.赋值语句的涵义是什么?

数据传递。

5.数据类型强制转换的情形有哪些?如何转换?

对于变窄转换,如long到short、double到float,或者其他不兼容转换:float到short、

charSOshort等,必须进行强制类型转换。

floatf=(float)11.5;或floatf=11.5f;

shortb;

b=(short)f;

6.每一条程序语句都以分号结束,该分号能否用中文输入模式下输入的分号?为何?

不能。中英文输入模式下输入的分号是不同的,不但外观不同,其存储所需的空间也不

同,Java编译器只能识别英文的分号,遇到中文分号会报错。

7.float或double变量能否精确存储0.1这个小数?为什么?

不能。float和double不仅范围有限,精度也有限,有限的比特串不能精确表示0.1这

个重要的小数。换句话说,想精确表示0.1这个小数,多少比特都不够用。同样,0.2、0.4

和0.8等,也都不能被精确存储,其根本原因是计算机采用的是二进制格式。

第3章

1.假定乘坐飞机时,每位顾客可以免费托运20kg以内的行李,超过部分按每公斤收费1.2

元,以下是相应的计算收费程序。该程序存在错误,请找出其中的错误。

publicclassTest

{

publicstaticvoidmain(String[]args)throwslOException

{

floatw,fee;

〃以下代码为通过控制台交互输入行李重量

InputStreamReaderreader=newInputStreamReader(System.in);

BufferedReaderinput=newBufferedReader(reader);

System.out.printin("请输入旅客的行李重量:");

Stringtemp=input.rea(lLine();

w=Float.parseFloat(temp);〃字符串转换为单精度浮点型

fee=0;

if(w>20);

fee=(float)1.2*(w-20);

System.out.println("该旅客需交纳的托运费用:"+fee+“元”);

)

}

缺少importjava.io.*;语句

2.有一条阶梯,如果每步2阶,则最后剩1阶,如果每步3阶则剩2阶,每步5阶则剩4

阶,每步6阶则剩5阶,每步7阶,则刚好走完。问这条阶梯最少有多少阶?找出以下求

解程序的错误所在。

publicclassTest

{publicstaticvoidmain(String[]args)

(

inti;

while(i%2==l&&i%3==2&&i%5==4&&i%6==5&&i%7==0)

(

i++;

System.out.println("这条阶梯最少有:“+i+”阶”);

)

1)变量i应进行初始化。

2)while循环的条件表达式应加上“非”,才符合逻辑。

3.试用单分支结构设计一个程序,判断用户输入的值X,当X大于零时求X值的平方根,

否则不执行任何操作。

importjava.io.*;

importjava.lang.*;

publicclassTest

{publicstaticvoidmain(String[]args)throwslOException

(

floatx;

InputStreamReaderreader=newInputStreamReader(System.in);

BufferedReaderinput=newBufferedReader(reader);

System.out.println("请输入x:n);

Stringtemp=input.readLine();

x=Float.parseFloat(temp);〃字符串转换为单精度浮点型

if(x>0)

{System.out.println("平方根值M+Math.sqrt(x));}

)

)

4.从键盘读入两个字符,按照字母表的顺序进行排序,将前面的字符置于A=后面,排后

面的字符置于B=后面,比如输入ok,应输出A=kB=o,请设计实现该程序。

importjava.io.*;

publicclassTest

{publicstaticvoidmain(String[]args)throwslOException

(

charA,B,cl,c2;

cl=(char)System.in.read();;

c2=(char)System.in.read();;

if(cl>c2)

(

A=c2;

B=cl;

}

else

(

A=cl;

B=c2;

)

System.out.println。'A="+A+"B="+B);

)

)

5.用穷举法求出3位数中百、十、个位数的立方和就是该数的数。

publicclassTest

{publicstaticvoidmain(String[]args)

(

inta,b,c,x=100;

while(x<1000)

(

a=x%10;

b=(x%100-a)/10;

c=(x-x%100)/100;

if(a*a*a+b*b*b+c*c*c==x)

{System.out.println(x);}

x+=l;

}

)

)

6.编程实现打印以下图案:

*

publicclassTest

{publicstaticvoidmain(String[]args)

(

inti,j,k;//i控制行数,k控制*的个数,j控制空格数

for(i=l;i<=6;i++)

(

for(j=l;j<=i-l;j++)

{System.out.print('rn);}〃打印空格

for(k=1;k<=13・i*2;k++)

{System.out.print(n*M);}〃打印*号

System.out.println();〃换行

}

)

1

7.统计1至1万之间共有多少个素数。

publicclassTest

{publicstaticvoidmain(String[Jargs)

{inti,j,count=0;

label:

for(i=l;i<=10000;i++)〃查找1到10000以内的素数

{for(j=2;j<i;j++)//检验是否不满足素数条件

{if(i%j==0)〃不满足

{continuelabel;}〃跳过后面不必要的检验

!

count++;〃计数

)

System.out.println("个数:"count);

8.打印输出斐波纳契数列的前12项。

斐波纳契数列的前12项如下:

第1项:0

第2项:1

第3项:1

第4项:2

第5项:3

第6项:5

第7项:8

第8项:13

第9项:21

第10项:34

第11项:55

第12项:89

publicclassTest

{publicstaticvoidmain(String[]args)

{inti=0,j=l;

for(intk=0;k<6;k++)

(

System.out.print(i+""+j+n");

i=i+j;

j=j+j;

9.读程序,写结果。

importjava.io.*;

publicclassTest

publicstaticvoidmain(String[]args)throwslOException

(

charsex='f';

switch(sex)

(

case'm':System,out.printin("男性”);

break;

case'f':System.out.printin("女性”);

case'u':System,out.printin("未知");

}

}

)

女性

未知

10.读程序,写结果。

publicclassTest

{publicstaticvoidniain(String[]args)

(

inti,s=0;

for(i=l;i<=100;i++)

(

if(i%3==0)

{continue;}

s+=i;

)

System.out.println(,,s=,,+s);

)

)

s=3367

11.读程序,写结果。

publicclassTest

{publicstaticvoidmain(String[]args)

(

inti,s=0;

for(i=l;i<=100;i++)

(

s+=i;

if(s>100)

{break;}

)

System.out.println(,*s=n+s);

)

)

s=105

12.个位数是6,且能被3整除的5位数共有多少个?请设计并实现该程序。

publicclassTest

{publicstaticvoidmain(String[]args)

(

inti=10006,count=0;

while(i<100000)

{if(i%3==0)

{count++;}

i+=10;

System.out.println("符合条件的数共有"+count+"个)

运行结果:

符合条件的数共有3000个

13.用嵌套循环结构,设计一个模拟电子钟的程序。

提示:定义三个变量分别代表“小时”、“分”和“秒力根据电子钟分、秒、小时之间

的关系,采用三重循环来控制各量的增加,并由输出语句将变化中的三个量分别予以输出

显示,即为一模拟数字电子钟。此外,Java语言提供的延时方法为Thread.sleep(1000);1000

的单位为毫秒,即延时1秒。

importjava.util.*;

publicclassTest

{publicstaticvoidmain(String[]args)throwsInterruptedException

(

inthour=0,min=0,sec=0;

while(hour<24)

{

whi!e(min<60)

(

while(sec<60)

{sec++;

Thread.sleep(l000);

System.out.println(hour+”时,+min+”分,+sec+”秒)

)

sec=0;

min++;

)

min=0;

hour++;

第4章

1.以下叙述中不正确的是O

A、在方法中,通过return语句传回方法值

B、在一个方法中,可以执行有多条return语句,并返回多个值

C、在Java中,主方法main()后的一对圆括号中也可以带有参数

D、在Java中,调用方法可以在System,out.printin()语句中完成

B

2.以下正确的描述是.

A、方法的定义不可以嵌套,但方法的调用可以嵌套

B、方法的定义可以嵌套,但方法的调用不可以嵌套

C、方法的定义和方法的调用均不可以嵌套

D、方法的定义和方法的调用均可以嵌套

A

3.以下正确的说法为.

A、在不同方法中不可以使用相同名字的变量

B、实际参数可以在被调方法中直接使用

C、在方法内定义的任何变量只在本方法范围内有效

D、在方法内的复合语句中定义的变量只在本方法语句范围内有效

C

4.按Java语言的规定,以下正确的说法是。

A、实参不可以是常量,变量或表达式

B、形参不可以是常量,变量或表达式

C、实参与其对应的形参占用同一个存储单元

D、形参是虚拟的,不占用存储单元

D

5.一个JavaApplication程序中有且只有一个方法,它是整个程序的执行入口。

main()方法

6.方法通常可以认为由两部分组成,它们是和。

方法头和方法体

7.读程序写结果。

publicclassTest{

staticvoidm(intx9inty,intz)

{x=lll;y=222;z=333;

publicstaticvoidmain(Stringargs[])

{intx=100,y=200,z=300;

m(x,y,z);

System.out.println(nx=1*+x+11y=n+y+Hz=M+z);

)

}

x=100y=200z=300

8.编写一个判断某个整数是否为素数的方法。

publicbooleanprime(intx)

(

for(intj=2;j<x;j++)〃检验是否满足素数条件

if(x%j==O)〃不满足

returnfalse;

returntrue;

}

9.编写两个方法,分别求两个整数的最大公约数和最小公倍数,在主方法中由键盘输入两

个整数并调用这两个方法,最后输出相应的结果。

importjava.io.*;

publicclassTest

{publicstaticvoidmain(String[]args)

{inta=0;

System.out.print("请输入数a:");

try(

BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));

a=Integer.parse!nt(br.readLine());

}catch(IOExceptione){}

intb=0;

System.out.print("请输入数b:n);

try

{BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));

b=Integer.parseInt(br.readLine());

}catch(IOExceptione){}

if(a<=0||b<=0)

System.out.println("输入不合法!");

System.out.println("最大公约数为:“+Gys(a,b));

System.out.println("最小公倍数为:“+Gbs(a,b));

)

publicstaticintGys(inta,intb)

intr=0;

if(a<b)

{r=a;

b=a;

a=r;}

inti=l;

while(i!=O)

{i=a%b;

a=b;

b=i;

}

returna;

)

publicstaticintGbs(inta,intb)

(

intab=a*b;

intr=0;

if(a<b)

{r=a;

b=a;

a=r;}

inti=l;

while(i!=O)

{i=a%b;

a=b;

b=i;

)

returnab/a;

)

)

10.以下程序执行后的输出为

publicclassTest

(

staticintml(inta,intb)

{

intc;

a+=a;

b+=b;

c=m2(a,b);

return(c*c);

)

staticintm2(inta,intb)

{

intc;

c=a*b%3;

return(c);

}

publicstaticvoidmain(String[]args)

(

intx=l,y=3,z;

z=ml(x,y);

System.out.printIn(Mz=M+z);

)

)

z=0

11.编写一个方法,实现求某个整数的各个位上的数字之和的功能。

importjava.io.*;

publicclassTest

{publicstaticvoidmain(String[]args)

{inti,a=0,s=0;

System.out.print("请输入数a:”);

try(

BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));

a=Integer.parseInt(br.readLine());

}catch(IOExceptione){}

for(i=10;a%i!=a;i*=10)

(

s+=(a%i)/(i/10);

1

s+=a/(i/10);

System.out.printing各位数之和为“+s);

)

)

12.编写程序实现十进制整数到八进制的转换。

importjava.io.*;

publicclassTest

{publicstaticvoidmain(String[]args)

{inti,k,a=0,d,s=0;

System.out.print("请输入数:与;

try(

BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));

a=Integer.parseInt(br.readLine());

}catch(IOExceptione){}

d=a%8;

s+=d;

k=10;

for(i=64;a-d!=0;i*=8)

(

s+=(a-d)%i*8/i*k;

k*=10;

d=a%i;

)

System.out.println("八进制数为"+s);

)

}

13.用于指出数组中某个元素的数字被叫做;数组元素之所以相关,是因为它们具有

相同的和。

下标;数组名和数据类型。

14.数组intresults[]=newint[6]所占存储空间是字节。

24

15.使用两个下标的数组被称为数组,假定有如下语句:

floatscores[][]={{1,2,3},{4,5},{6,7,8,9));

则scores.length的值为:,scores[l].length的值为:,

scores[l][l]的值为:。

二维;3;2;5。

16.从键盘上输入10个双精度浮点数,计算出这10个数的和以及它们的平均值。要求分

别编写求和及求平均值的方法。

importjava.io.*;

publicclassTest

(

publicstaticvoidmain(String[Jargs)throwslOException

(

InputStreamReaderreader=newInputStreamReader(System.in);

BufferedReaderinput=newBufferedReader(reader);

Stringtemp;

doublex[]=newdoublet10];

fbr(inti=0;i<10;i++)

(

temp=input.readLine();

x[i]=Double.parseDouble(temp);

)

S(x);

Avg(x);

)

publicstaticvoidS(doublex[])

(

〃计算并输出和

doublesum=0;

for(inti=0;i<10;i++)

(

sum+=x[i];

)

System.out.println("总和:"+sum);

)

publicstaticvoidAvg(doublex[])

I

〃计算并输出平均数

doublesum=0;

for(inti=0;i<10;i++)

(

sum+=x[i];

)

System.out.println("平均数:"+sum/l0);

)

)

17.利用数组输入6位大学生3门课程的成绩,然后计算

(1)每个大学生的总分;

(2)每门课程的平均分;

importjava.io.*;

publicclassScores

publicstaticvoidmain(String[]args)throwslOException

intsum=O;〃总分

intn=6;〃学生数

Stringtemp;

InputStreamReaderreader=newInputStreamReader(System.in);

BufferedReaderinput=newBufferedReader(reader);

intx[][]=newint[6][3];

〃录入成绩

for(inti=0;i<6;i++)

(

for(intj=O;j<3;j++)

(

System.out.print((i+1)+”号同学”+(j+l)+”号课程分数");

temp=input.readLine();

x[i][j]=Integer.parselnt(temp);

)

)

〃计算并输出每一位同学的总分

fbr(inti=0;i<n;i++)

(

for(intj=O;j<3;j++)

(

sum+=x[i][j];

)

System.out.println((i+1)+”号同学总分:"+sum);

sum=0;

)

〃计算并输出每一门课程的平均分

for(inti=0;i<3;i++)

(

for(intj=O;j<n;j++)

(

sum+=x[j][i];

)

System.out.println((i+1)+”号课程班级平均分:"+sum*1.0/n);

sum=0;

18.编写一个方法,实现将字符数组倒序排列,即进行反序存放。

importjava.io.*;

publicclassTest

publicstaticvoidmain(String[]args)throwslOException

!

charc[]={','G','a','m?e','s'};

rever(c);

System.out.println(c);

)

publicstaticvoidrever(charc[])

{

chart;

for(inti=O,j=c.length-l;i<j;i++,j—)

(

t=c[i];

c[i]=c[j];

1

19.Java语言为什么要引入方法这种编程结构?

提高复用度,减少程序代码量

促进程序结构化,提高可读性和可维护性

20.为什么要引入数组这种数据构造类型?数组有哪些特点?Java语言创建数组的方式

有哪些?

1、为了便于处理一批同类型的数据,Java语言引入了数组类型;

2、首先,数组中的每个元素都是相同数据类型的;其次,数组中的这些相同数据类型

元素是通过数组下标来标识的,并且该下标是从0开始的;最后,数组元素在内存中的存放

是连续的。

3、Java语言规定,创建数组可以有两种方式:初始化方式和new操作符方式。初始化

方式是指直接给数组的每一个元素指定一个初始值,系统自动根据所给出的数据个数为数组

分配相应的存储空间,通常这样创建数组的方式适用于数组元素较少的情形。对于数组比较

大的情形,即数组元素过多,用初始化方式显然不妥,这时应采用第二种方式,即new操

作符方式。

第5章

1.实现类MyClass的源码如下:

classMyClassextendsObject{

privateintx;

privateinty;

publicMyClass(){

x=0;

y=o;

)

publicMyClass(intx,inty){

}

publicvoidshow(){

System.out.prmtln(H\nx=H+x+''y=n+y);

)

publicvoidshow(booleanflag){

if(flag)System.out.println(n\nx=M+x+My=''+y);

elseSystem.out.println(H\ny=H+y+,*x=n+x);

)

protectedvoidHnalize()throwsthrowable{

supenfinalize();

)

}

在以上的源代码中,类MyClass的成员变量是一;构造方法是一;对该类的一

个实例对象进行释放时将调用的方法是一。(多选)

(A)privateintx;

(B)privateinty;

(C)publicMyClass()

(D)publicMyClass(intx,inty)

(E)publicvoidshow()

(F)publicvoidshow(booleanflag)

(G)protectedvoidfinalize()throwsthrowable

答案:ABCDG

2.上题所定义的类MyClass的构造方法MyClass(intx,inty)的目的是使MyClass的成

员变量privateintx,privateinty的值分别等于方法参数表中所给的值intx,inty。请写出

MyClass(intx,inty)的方法体(用两条语句):

答案:this.x=xthis.y=y

3.MyClass定义同第一题。

设publicstaticvoidmain(Stringargs[])方法体如下:

{

MyClassmyclass;

myclass.shovv();

)

编译运行该程序将会有何结果?

(A)x=0y=0

(B)y=0x=0

(C)x=...y=…(x,y具体为何值是随机的)

(D)源程序有错

答案:D(myclass没有实例化)

4.MyClass声明同第一题。

设publicstaticvoidmain(Stringargs[])方法体如下:

(

MyClassmyclass=newMyClass(5,10);

myclass.show(false);

)

编译运行该程序将会有何结果?

(A)x=0y=0

(B)x=5y=10

(C)y=10x=5

(D)y=0x=0

答案:C

5.MyClass定义同第一题。

设publicstaticvoidmain(Stringargs[])方法体如下:

(

MyClassmyclass=newMyClass(5,10);

myclass.show(false);

)

现在想在main方法中加上一条语句来释放myclass对象,应用下面哪条?

(A)myclass=null;

(B)free(myclass);

(C)delete(myclass);

(D)Java语言中不存在相应语句

答案:A

6.假设已经编写好了类Classi:

packagemypackage;publicclassClassi{........;)

保存在Classi.java文件中。

现在main方法所在的源程序MainPro.java如下:

importmypackage;

假设操作系统中的CLASSPATH环境变量已被设置为"c:\工作目录”,而main方法所在

的主类MainPro.java就在c:\工作目录下,那么,类Classi应存放在哪个目录中呢?

答案:c:\工作目录'mypackage

7.定义一个学生类student,成员变量有学号、姓名、性别、年龄,方法有获得学号、

姓名、性别、年龄;修改年龄。试编写Java主程序,实例化student类,并测试其方法。

答:

publicclassstudent{

privateintstu_ID;

privateStringname;

privateStringsex;

privateintold;

student(intid,Stringname,Stringsex,intold){

stu」D=id;

=name;

this.sex=sex;

this.old=old;

}

voidshow_id(){

System.out.println(HthestudentIDis:"+stu_ID);

)

voidshow_name(){

System.out.println(uthestudentnameis:"+name);

}

voidshow_sex(){

System.out.println(Hthestudentsexis:"+sex);

)

voidshow_old(){

System.out.println(,'thestudentoldis:"+old);

)

voidchange_old(intnewyear){

old=newyear;

)

publicstaticvoidmain(Stringargs[]){

studentLee=newstudent(2007070130,"LiMingn,nM",18);

Lee.show_id();

Lee.show_name();

Lee.show_sex();

Lee.show_old();

Lee.change_old(20);

Lee.show_old();

8.根据下面的要求编程实现复数类Complex。

⑴复数类Complex的属性:

real代表复数的实数部分

imagin代表复数的虚数部分

(2)复数类Complex的方法:

Complex。:构造函数,将实部、虚部都置为0;

Complex(doubler,doublei):构造函数,创建复数对象的同时完成复数的实部、

虚部的初始化,r为实部的初值,i为虚部的初值;

getReal():获得复数对象的实部;

getlmagin():获得复数对象的虚部;

complexAdd(ComplexNumber):当前复数对象与形参复数对象相加,所得的

结果也是复数值,返回给此方法的调用者;

complexMinus(ComplexNumber):当前复数对象与形参复数对象相减,所得

的结果也是复数值,返回给此方法的调用者;

complexMulti(ComplexNumber):当前复数对象与形参复数对象相乘,所得

的结果也是复数值,返回给此方法的调用者;

toString():把当前复数对象的实部、虚部组合成a+bi的字符串形式,其中a

和b分别为实部和虚部的数据。

答案:

publicclassComplex{

privatedoublereal;

privatedoubleimagin;

Complex(){

real=0;

imagin=0;

)

Complex(doubler,doublei){

real=r;

imagin=i;

)

publicdoublegetReal(){

returnreal;

publicdoublegetlmagin(){

returnimagin;

publicComplexcomplexAdd(ComplexNumber))

real=real+Number.real;

imagin=imagin+Number.imagin;

returnthis;

)

publicComplexcomplexMinus(ComplexNumber){

real=real-Number,real;

imagin=imagin-Number.imagin;

returnthis;

)

publicComplexcomplexMulti(ComplexNumber){

real=real*Number.real;

imagin=imagin*Number.imagin;

returnthis;

)

publicvoidtostring(){

System.out.println(reaI+n+,'H-imagin+,,iu);

publicstaticvoidmain(Stringargs[]){

Complexa=newComplex();

Complexb=newComplex。,4);

Complexc=newComplex(2,3);

a.tostringO;

b.tostringO;

plexAdd(b);

c.tostring();

}

)

9.编写一个银行账户类。要求存放用户的账号、姓名、密码、账户余额等个人信息。

类的操作包括存款、取款、查询账户余额、修改密码等。创建此类的对象并测试相应的操

作。

答:

importjava.util.Scanner;

publicclassBank{

privateStringaccount;〃贝长号

privateStringpassword;〃密码

privateStringname;〃姓名

privatedoublebalance;〃账户余额

Bank(Stringaccount,Stringname))

this.account=account;

=name;

this.balance=0.0;

this.password=Integer.toString(888888);

〃查询账户余额

publicdoublegetBalance(){

returnbalance;

}

//存款

publicvoiddepositMoney(doubleamount){

this上alance=this.balance+amount;〃存入金额力口原金额

)

〃取款

publicvoidwithdrawMoney(doubleamount){

if(amount>this.balance){〃取款金额大于余额

System.out.println("余额不足!”);

)

else{

this.balance=this.balance-amount;〃原金额减去支取金额

)

}

〃修改密码

publicvoidsetPassword(Stringpassword){

this.password=password;

)

publicstaticvoidmain(String[]args){

Bankcustomer=newBank("6666888866668888”,“Zhang");//初始化账户信息

customer.setPassword("123456");〃修改账户密码

System.out.println("欢迎光临模拟银行)

Scannerscan=newScanner(System.in);

System.out.print(”请输入存款金额:");

doubleamount=scan.nextDouble();

customer.depositMoney(amount);

System.out.println("当前余额为:"+customer.getBalance()+“元”);

System.out.print(”请输入取款金额:

amount=scan.nextDouble();

custome匚wilhdrawMoney(amount);

System.out.println("当前余额为:"+customer.getBalance()+“元");

}

)

10.先在一个包中编写类ClassA,要求该类包括4种不同访问权限的成员变量和方法。

再在另一个包中编写类ClassB,在该类中编写一个方法访问ClassA的成员。在程序中实现

所有可以实现的访问,并说明所有不能访问的成员的原因。

答:

packageA;

publicclassClassA{

publicintpubliclnt;

intdefaultlnt;

protectedintprotectedlnt;

privateintprivatelnt;

publicvoidpublicMethod(){

System.out.println("publicMethodn);

)

voiddefaultMethod(){

System.oul.prinUn("defaukMethod”);

)

protectedvoidprotectedMethod(){

System.out.println(HprotectedMethodM);

)

privatevoidprivateMethod(){

System.out.println("privateMethod");

)

1

packageB;

importA.*;

classClassBextendsClassA{

voidaccessTest(ClassAa,ClassBb){

a.publiclnt;

a.defaultlnt;

tectedlnt;

a.privateint;

b.publiclnt;

b.defaultlnt;

tectedlnt;

b.privatelnl;

a.publicMethod();

a.defaultMethod();

tectedMethod();

a.privateMethod();

b.publicMethod();

b.defaullMethod();

tectedMethod();

b.privateMethod();

备注:上述代码只是示意,请读者自行完善,并在ClassB中添加main方法,或者再定义一

个主类。亲自上机编译、运行一下,体验4种不同访问权限的作用。

第6章

1.B

2.C

3.接口中可以有的语句为;(从ABCD中多选)

一个类可以继承―父类,实现—接口;一个接口可继承一接口;(从EF中单选)

接口—继承父类,—实现其它接口;实现某个接口的类—被该接口类型引用;(从

GH中单选)

(A)intx;

(B)inty=0;

(C)publicvoidaa();

(D)publicvoidbb(){System.out.println("hello");}

(E)仅一个

(F)一个或多个

(G)可以

(H)不可以

答案:BC;E;F;F;H;H;G

4.解释this和super的意义和作用。

答:Java中,this

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论