Java核心技术习题答案.docx

上传人:b****7 文档编号:10696346 上传时间:2023-02-22 格式:DOCX 页数:44 大小:27.66KB
下载 相关 举报
Java核心技术习题答案.docx_第1页
第1页 / 共44页
Java核心技术习题答案.docx_第2页
第2页 / 共44页
Java核心技术习题答案.docx_第3页
第3页 / 共44页
Java核心技术习题答案.docx_第4页
第4页 / 共44页
Java核心技术习题答案.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

Java核心技术习题答案.docx

《Java核心技术习题答案.docx》由会员分享,可在线阅读,更多相关《Java核心技术习题答案.docx(44页珍藏版)》请在冰豆网上搜索。

Java核心技术习题答案.docx

Java核心技术习题答案

Java核心技术

习题答案

马志强张然李雷孝编

清华大学出版社

第一章Java语言概述3

第二章Java语法基础4

第三章面向对象编程11

第四章数组25

第五章高级类特性26

第六章GUI编程26

第七章集合框架29

第九章集合框架42

第十章IO流46

第十一章JDBC访问数据库46

第十二章线程48

第十三章网络编程53

第一章Java语言概述

一、选择题

1-5ABBBB

6-8AAB

二、填空题

1.MyClass

2.String数组(String[])一

3.javacjavaA

三、程序设计题

1、搭建Java运行环境,并写一个Java程序打印输出“开始学习Java程序设计!

”。

1)首先安装JDK;

2)配置环境变量path,classpath可配可不配;

3)

publicclassHelloWorld{

publicstaticvoidmain(String[]args){

"开始学习Java程序设计!

");

}

}

2、修改下面四个Java源文件中的错误,使其能够编译和运行。

TestAnother1类不能再使用public修饰,一个源文件中只能有一个类或者接口用public修饰;

源文件中public修饰的类的名字为Testing2,和源文件名字不一致;:

Test3类的main方法的形参类型为String[];

Test4类的main方法必须使用static关键字修饰。

第二章Java语法基础

选择题

1-5BCADB

6-9DCCC

填空题

1.abc,al,_abc,_1a,ab123

#a,const,$abc,1abc,if,$#1sa,$_a,_$q1

2.题目出现问题:

代码修改为ch=(char)(ch+1);结果为’B';如果直

接结果为98。

(真)false(假)

5.22false2

*20/100(double)m*20/100

三、编程题

1、由命令行输入一个成绩,使用switch结构求出成绩的等级。

A:

90-100;

B:

80-89;C:

70-79;D:

60-69;E:

0-59。

importclassIfElseTest{

publicstaticvoidmain(String[]args){

Scannersc=newScanner;

intgrade=();

if(grade<0||grade>100){

"aaaa");

(0);

}

inttemp=(int)(grade/10);

switch(temp){

case10:

{

"A");break;

}

case9:

{

"A");

break;

}

case8:

{

"B");

break;

}case7:

{

break;

}

case6:

{

"D");

break;

}

default:

{

"E");break;

}

;打印出第一个大于小于的值。

2、计算圆周率:

PI=4-4/3+4/5-4/7……

doubleresult=;for(inti=1;;i++){

doublem=(2*i-1);

if((i%2)==0){result-=m;

}else{result+=m;

}

if(result>&&result<{"result:

"+result);break;

}

}

}

}

3、输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值。

斐波那契数列:

1、1、2、3、5、8、13、21、34、……。

importclassFibonacciTest{

publicstaticvoidmain(String[]args){

Scannersn=newScanner;

intnum=();

inti=1;

intn1=1,n2=1;

while(i<=num){

if(i==1||i==2){

n2=1;

}else{

inttemp=n2;

n2=n1+n2;

n1=temp;

}

i++;

}

"第"+num+"个值为:

"+n2);

}

}

4、计算多项式1-1/3+1/5-1/7+1/9的值。

1)要求出前50项和值。

2)要求出最后一项绝对值小于1e-5的和值

publicclassSumTest{

publicstaticvoidmain(String[]args){

doublesum=;

for(inti=1;i<=50;i++){

if(i%2==0){

sum=(2*i-1);

}else{

sum=sum+(2*i-1);

}

}

"前50项和值:

"+sum);

doubleitem=;

intj=1;

sum=;

while(item<{

item=(2*j-1);

if(j%2==0){

sum-=item;

}else{

sum+=item;

}

j++;

"最后一项绝对值小于1e-5的和值:

"+sum);

}

}

5、产生100个0-999之间的随机整数,然后判断这100个随机整数哪些是素数,哪些不是

publicclassPrimeTest{

publicstaticvoidmain(String[]args){

PrimeTestt=newPrimeTest();for(inti=0;i<100;i++){intnum=(int)()*1000);if(num)){

"是素数!

");

}else{

"不是素数!

");

}

}

}

publicbooleanisPrime(intnum){

for(inti=2;i<=num/2;i++){

if(num%i==0){

"第一个被"+i+"整除!

");returnfalse;

}

}

returntrue;

}

}

6在屏幕上打印出n行的金字塔图案,如,若n=3,贝昭案如下:

*****

importclassPrintStar{

publicstaticvoidmain(String[]args){Scannersn=newScanner;introws=();

for(inti=1;i<=rows;i++){

for(intj=1;j<=rows-i;j++){"");

}

for(intk=1;k<=2*i-1;k++){"*");

}

}

}

}

7、歌德巴赫猜想,任何一个大于六的偶数可以拆分成两个质数的和,打印出所有的可能。

如输入10,结果为:

10=5+5;10=3+7。

publicclassGede{

publicstaticvoidmain(String[]args){

intn=(args[0]);

if(n<=6||n%2!

=0){

"错误的参数!

");return;

}

Gedeg=newGede();ava。

publicclassCalenderModelA

{

ava。

importclassTestCalenderModelA

{

publicstaticvoidmain(String[]args)

{

Scannerscan=newScanner;

"请输入年份:

");

intyear=();

"请输入月份:

");intmonth=();

"月历如下");

CalenderModelAtestBegin=newCalenderModelA();(year,month);

}

第三章面向对象编程

一、选择题

1-5CABDD

2-10DCCBC

11-12CC

二、填空题

1.Packagemypackage;

2.final

3.Object

4.packageimportclass

5.c

三、程序设计题

2、按下列要求编写程序:

1创建Teacher类

要求:

Teacher类要描述姓名、年龄、薪水,类型分别为String、int、double

2创建TeacherTest类要求:

在TeacherTest类中创建Teacher的对象;为该对象的属性(姓名、性别、年龄)赋值;将该对象的属性(姓名、性别、年龄)输出;

3为Teacher类添加一个方法,用于在教师原有薪水的基础上增加5000;④修改TeacherTest类,增加对教师增加薪水方法的调用,并将增加后的薪水值输出。

publicclassTeacher{publicStringname;

publicintage;

publicdoublesalary;

publicStringgetName(){

returnname;

publicvoidsetName(Stringname){

=name;

}publicintgetAge(){returnage;

}publicvoidsetAge(intage){

=age;

}publicdoublegetSalary(){

returnsalary;

}

publicvoidsetSalary(doublesalary){

=salary;

}publicTeacher(){

}

publicTeacher(Stringname,intage,doublesalary){=name;

=age;=salary;

}publicvoidaddSalary(){

=+5000;

}

}

publicclassTeacherTest{

publicstaticvoidmain(String[]args){

Teacherteacher=newTeacher();=35;

="zhangsan";

();

}

}

3、定义一个Person类。

1包含以下属性:

Stringname;intage;booleangender;Person

partner。

2定义marry(Personp)方法,代表当前对象和p结婚,如若可以结婚,则输出恭贺信息,否则输出不能结婚原因。

下列情况不能结婚:

结婚年龄,男<24,女<22;3,某一方已婚。

3定义测试类,来测试以上程序。

publicclassPerson{

privateStringname;

privateintage;

privatebooleangender;

Personpartner;

publicPerson(Stringname,intage,booleangender,Personpartner){

=name;

=age;

=gender;

=partner;

}

publicvoidmarry(Personp){

if=={

"同性不能结婚!

");

return;

if(==true&&<24)||==false&&<22)

||==true&&<24)||==false&&<22)){

"没有达到结婚年龄!

");

return;

}

if!

=null||!

=null){

"有一方已经结婚!

");

return;

}

","++","+"祝你们新婚愉快!

");

=p;

=this;

}

publicstaticvoidmain(String[]args){

Personp1=newPerson("关之琳",23,false,null);

Personp2=newPerson("刘德华",26,true,null);

Personp3=newPerson("孙楠",70,true,null);

(p2);

(p3);

}

}

4、定义一个Animal类,该类有两个私有属性,name(代表动物的名字)和

legs(代表动物的腿的条数)。

1两个构造方法,一个无参,默认给name赋值为AAA给legs赋值为4;

另一个需要两个参数,分别用这两个参数给私有属性赋值。

2两个重载的move()方法,其中一个无参,在屏幕上输出一行文字:

XXXMoving!

!

(XXX为该动物的名字);另一个需要一个int参数n,在屏幕上输出n次XXXMoving!

!

publicclassAnimal1{

privateStringname;

privateintlegs;

publicAnimal1(){

="AAA";

=4;

}

publicAnimal1(Stringname,intlegs){super();

=name;

=legs;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

=name;

}

publicintgetLegs(){

returnlegs;

}

publicvoidsetLegs(intlegs){

=legs;

}

publicvoidmove(){

"Animalmoving!

");

}

publicvoidmove(intn){

inti=1;

while(i<=n){

"Animalmoving!

");i++;

}

5、定义一个Fish类,继承自Animal类。

name并给legs

XXXSwimming!

!

①提供一个构造方法,该构造方法需要一个参数赋默认值0;

②覆盖Animal类中的无参move()方法,要求输出:

publicclassFishextendsAnimal{

privateStringname;

privateintlegs;

publicFish(Stringname){

=name;

=0;

}

publicvoidmove(){

"Fishisswimming!

");

}

}

publicclassBirdextendsAnimal{

privateStringname;

privateintlegs;

publicBird(Stringname){

=name;

=2;

}

publicvoidmove(){

"Birdisflying!

");

}

}

6写一个类Zoo,要求分别生成若干个Animal、Fish和Bird。

并调用他们的属性和方法。

publicclassZoo{

publicstaticvoidmain(String[]args){

Animala=newAnimal("dog",4);

();

(3);

Fishf=newFish("smallfish");

();

Birdb=newBird("xique");

();

Animalaf=newFish("smallfish");

();

}

}

7、某公司的雇员分为以下若干类:

1Employee:

这是所有员工总的父类,属性:

员工的姓名,员工的生日月

份。

方法:

getSalary(intmonth)根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。

2SalariedEmployee:

Employee的子类,拿固定工资的员工。

属性:

月薪;

3HourlyEmployee:

Employee的子类,按小时拿工资的员工,每月工作超

出160小时的部分按照倍工资发放。

属性:

每小时的工资、每月工作的小时数;

4SalesEmployee:

Employee的子类,销售人员,工资由月销售额和提成率决定。

属性:

月销售额、提成率。

5BasedPlusSalesEmployee:

SalesEmployee的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。

属性:

底薪。

写一个程序,把若干各种类型的员工放在一个Employee数组里,写一个函数,

打印出某月每个员工的工资数额。

注意:

要求把每个类都做成完全封装,不允许非私有化属性。

classEmployee{

privateStringname;

privateintmonth;

publicEmployee(Stringname,intmonth){

=name;

=month;

}

publicStringgetName(){

returnname;

}

publicdoublegetSalary(intmonth){

if==month){

return;

}

return;

}

}

classSalariedEmployeeextendsEmployee{

privatedoublemonthSalary;

publicSalariedEmployee(Stringname,int

monthSalary){

super(name,month);

=monthSalary;

}

publicdoublegetSalary(intmonth){

returnmonthSalary+(month);

}

}

classHourlyEmployeeextendsEmployee{

privateinthours;

privatedoublehourSalary;

publicHourlyEmployee(Stringname,intmonth,int

month,double

hours,double

hourSalary){

super(name,month);

=hours;=hourSalary;

}

publicdoublegetSalary(intmonth){doubleresult;

if(hours<=160){result=hours*hourSalary;

}else{result=160*hourSalary+(hours-160)**hourSalary;

}returnresult+(month);

}

}

classSalesEmployeeextendsEmployee{

privatedoublesalesCount;

privatedoublerate;

publicSalesEmployee(Stringname,intmonth,doublesalesCount,doublerate){

super(name,month);=salesCount;

=rate;

}

publicdoublegetSalary(intmonth){returnsalesCount*rate+(month);

}

}

classBasedPlusSalesEmployeeextendsSalesEmployee{

privatedoublebasedPlus;

publicBasedPlusSalesEmployee(Stringname,intmonth,doublesalesCount,doublerate,doublebasedPlus){

super(name,month,salesCount,rate);

=basedPlus;

}

publicdoublegetSalary(intmonth){

returnbasedPlus+(month);

}

}

publicclassEmployeeTest{

publicstaticvoidmain(String[]args){

Employee[]e=newEmployee[4];

e[0]=newSalariedEmployee("zhangsan",9,;

e[1]=newHourlyEmployee("lisi",5,230,;

e[2]=newSalesEmployee("wangwu",11,,;

e[3]=newBasedPlusSalesEmployee("zhaoliu",2,,,;for(inti=0;i<;i++){

""+"9月份的工资总额为:

"+e[i].getSalary(9));}

}

}

四、实训题

班级成绩管理系统实体类设计。

publicclassTest{

publicstaticvoidmain(String[]args){

Studentstu=newStudent("001","姚明");

("信息工程学院");

("软件工程");

("软件10-1");

Gradestugrade=newGrade();

("Web程序设计");

("2011-2012(下)");

().addGrade(stugrade);

stugrade=newGrade();ddGrade(stugrade);

stugrade=newGrade();ddGrade(stugrade);

stugrade=newGrade();ddGrade(stugrade);

stugrade=newGrade();ddGrade(stugrade);

stugrade=newGrade();ddGrade(stugrade);

stugrade=newGrade();ddGrade(stugrade);

stugrade=newGrade();ddGrade(stugrade);

("2011-2012(下)");

().sortByxq();

}

}

publicclassStudent{

publicstaticlongid=001l;

privateStringsid;

privateStringsname;

privateStringxueyuan;oString();

autoId();

grades=newGradeArray();

publicStudent(Stringsid){this(sid,null);

}

publicStudent(S

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

当前位置:首页 > 成人教育 > 成考

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

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