Java核心技术习题答案.docx

上传人:b****8 文档编号:11946945 上传时间:2023-06-03 格式:DOCX 页数:84 大小:102.54KB
下载 相关 举报
Java核心技术习题答案.docx_第1页
第1页 / 共84页
Java核心技术习题答案.docx_第2页
第2页 / 共84页
Java核心技术习题答案.docx_第3页
第3页 / 共84页
Java核心技术习题答案.docx_第4页
第4页 / 共84页
Java核心技术习题答案.docx_第5页
第5页 / 共84页
Java核心技术习题答案.docx_第6页
第6页 / 共84页
Java核心技术习题答案.docx_第7页
第7页 / 共84页
Java核心技术习题答案.docx_第8页
第8页 / 共84页
Java核心技术习题答案.docx_第9页
第9页 / 共84页
Java核心技术习题答案.docx_第10页
第10页 / 共84页
Java核心技术习题答案.docx_第11页
第11页 / 共84页
Java核心技术习题答案.docx_第12页
第12页 / 共84页
Java核心技术习题答案.docx_第13页
第13页 / 共84页
Java核心技术习题答案.docx_第14页
第14页 / 共84页
Java核心技术习题答案.docx_第15页
第15页 / 共84页
Java核心技术习题答案.docx_第16页
第16页 / 共84页
Java核心技术习题答案.docx_第17页
第17页 / 共84页
Java核心技术习题答案.docx_第18页
第18页 / 共84页
Java核心技术习题答案.docx_第19页
第19页 / 共84页
Java核心技术习题答案.docx_第20页
第20页 / 共84页
亲,该文档总共84页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Java核心技术习题答案.docx

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

Java核心技术习题答案.docx

Java核心技术习题答案

Java核心技术

习题答案

马志强张然李雷孝编

清华大学出版社

第一章Java语言概述3

第二章Java语法基础4

第三章面向对象编程15

第四章数组38

第五章高级类特性45

第六章GUI编程51

第七章集合框架62

第九章集合框架77

第十章IO流81

第十一章JDBC访问数据库84

第十二章线程85

第十三章网络编程90

第一章Java语言概述

一、选择题

1-5ABBBB

6-8AAB

二、填空题

1.MyClassMyClass.class

2.String数组(String[])一

3.javacA.javajavaA

三、程序设计题

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

”。

1)首先安装JDK;

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

3)FirstJava.java

publicclassHelloWorld{

publicstaticvoidmain(String[]args){

开始学习Java程序设计!

");

}

}

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

Test1.java:

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

Test2.java:

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

Test3.java:

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

Test4.java:

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

第二章Java语法基础

一、选择题

1-5BCADB

6-9DCCC

二、填空题

1.abc,a1,_abc,_1a,ab123

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

2.题目出现问题:

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

3.true(真)false(假)

4.4

5.22false2

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

三、编程题

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

A:

90-100;B:

80-89;C:

70-79;D:

60-69;E:

0-59。

publicclassIfElseTest{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

intgrade=sc.nextInt();

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

System.exit(0);

}

inttemp=(int)Math.floor(grade/10);

switch(temp){

case10:

{

break;

}

case9:

{

break;

}

case8:

{

break;

}

case7:

{

break;

}

case6:

{

break;

}

default:

{

break;

}

}

}

}

2、计算圆周率:

PI=4-4/3+4/5-4/7......;打印出第一个大于3.1415小于3.1416的值。

publicclassPITest{

publicstaticvoidmain(String[]args){

doubleresult=0.0;

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

doublem=4.0/(2*i-1);

if((i%2)==0){

result-=m;

}else{

result+=m;

}

if(result>3.1415&&result<3.1416){

break;

}

}

}

}

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

斐波那契数列:

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

publicclassFibonacciTest{

publicstaticvoidmain(String[]args){

Scannersn=newScanner(System.in);

intnum=sn.nextInt();

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=0.0;

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

if(i%2==0){

sum=sum-1.0/(2*i-1);

}else{

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

}

}

前50项和值:

"+sum);

doubleitem=0.0;

intj=1;

sum=0.0;

while(item<0.00001){

item=1.0/(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)(Math.random()*1000);

if(t.isPrime(num)){

是素数!

");

}else{

不是素数!

");

}

}

}

publicbooleanisPrime(intnum){

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

if(num%i==0){

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

");

returnfalse;

}

}

returntrue;

}

}

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

*

***

*****

publicclassPrintStar{

publicstaticvoidmain(String[]args){

Scannersn=newScanner(System.in);

introws=sn.nextInt();

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=Integer.parseInt(args[0]);

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

=0){

错误的参数!

");

return;

}

Gedeg=newGede();

//因为1不是素数,n-2是偶数,所以从3开始循环

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

if(i%2==0){

continue;

}

if(g.isPrime(i)&&g.isPrime(n-i)){

}

}

}

/**

*判断num是否是素数

*/

publicbooleanisPrime(intnum){

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

if(num%i==0){

returnfalse;

}

}

returntrue;

}

}

四、实训题

万年历的设计与实现。

本程序包含两个类CalenderModelA和TestCalenderModelA。

CalenderModelA实现了赛事日期设置等主要功能,程序文件CalenderModelA.java。

publicclassCalenderModelA

{

//计算从公元始的天数

publicintgetNumberOfDay(intyear,intmonth,intday)

{

inttotal=0;

intlimit=getTotalDaysOfMonth(year,month);

if(day<=limit)

{

for(inty=1;y

{

total+=(this.isLeapYear(year)?

366:

365);

}

for(intm=1;m

{

total+=(this.getTotalDaysOfMonth(year,month));

}

total+=day;

returntotal;

}

else

{

您输入的日期非法");

return-1;

}

}

//打印万年历

publicvoidshow(intyear,intmonth)

{

inttotal=0;

//计算从公元始到今年之前的总天数

for(inty=1;y

{

total+=(this.isLeapYear(y)?

366:

365);

}

//计算今年到本月前的总天数

for(intm=1;m

{

total+=(this.getTotalDaysOfMonth(year,m));

}

//计算本月1日是星期几

total=total%7;

intd1=(total+1)%7;

intd2=this.getTotalDaysOfMonth(year,month);

年"+month+"月");

String[]s={"日","一","二","三","四","五","六"};

for(inti=0;i<7;i++){

}

for(inti=0;i

}

//打印本月日历

for(inti=d1,j=1;i

if((i+1)%7==0){

}

}

}

//判断是否为闰年

publicbooleanisLeapYear(intyear)

{

return((year%4==0)&&(year%100!

=0))||(year%400==0);

}

//计算某年某月天数

publicintgetTotalDaysOfMonth(intyear,intmonth)

{

inttotal=0;

switch(month){

case1:

case3:

case5:

case7:

case8:

case10:

case12:

total=31;

break;

case2:

total=this.isLeapYear(year)?

29:

28;

break;

case4:

case6:

case9:

case11:

total=30;

break;

}

returntotal;

}

}

TestCalenderModelA实现main方法,具有输入大赛起始和终止日期,输出日历,并计算大赛周期的功能。

程序文件TestCalenderModelA.java。

publicclassTestCalenderModelA

{

publicstaticvoidmain(String[]args)

{

Scannerscan=newScanner(System.in);

请输入年份:

");

intyear=scan.nextInt();

请输入月份:

");

intmonth=scan.nextInt();

月历如下");

CalenderModelAtestBegin=newCalenderModelA();

testBegin.show(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;

4修改TeacherTest类,增加对教师增加薪水方法的调用,并将增加后的薪水值输出。

Teacher.java:

publicclassTeacher{

publicStringname;

publicintage;

publicdoublesalary;

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicintgetAge(){

returnage;

}

publicvoidsetAge(intage){

this.age=age;

}

publicdoublegetSalary(){

returnsalary;

}

publicvoidsetSalary(doublesalary){

this.salary=salary;

}

publicTeacher(){

}

publicTeacher(Stringname,intage,doublesalary){

this.name=name;

this.age=age;

this.salary=salary;

}

publicvoidaddSalary(){

this.salary=this.salary+5000;

}

}

TeacherTest.java:

publicclassTeacherTest{

publicstaticvoidmain(String[]args){

Teacherteacher=newTeacher();

teacher.age=35;

teacher.name="zhangsan";

teacher.salary=1234.5;

teacher.addSalary();

}

}

3、定义一个Person类。

1包含以下属性:

Stringname;intage;booleangender;Personpartner。

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

下列情况不能结婚:

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

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

publicclassPerson{

privateStringname;

privateintage;

privatebooleangender;

Personpartner;

publicPerson(Stringname,intage,booleangender,Personpartner){

this.name=name;

this.age=age;

this.gender=gender;

this.partner=partner;

}

publicvoidmarry(Personp){

if(this.gender==p.gender){

同性不能结婚!

");

return;

}

if((this.gender==true&&this.age<24)||(this.gender==false&&this.age<22)

||(p.gender==true&&p.age<24)||(p.gender==false&&p.age<22)){

没有达到结婚年龄!

");

return;

}

if(this.partner!

=null||p.partner!

=null){

有一方已经结婚!

");

return;

}

祝你们新婚愉快!

");

this.partner=p;

p.partner=this;

}

publicstaticvoidmain(String[]args){

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

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

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

p1.marry(p2);

p1.marry(p3);

}

}

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

1两个构造方法,一个无参,默认给name赋值为AAA,给legs赋值为4;另一个需要两个参数,分别用这两个参数给私有属性赋值。

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

XXXMoving!

!

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

!

publicclassAnimal1{

privateStringname;

privateintlegs;

publicAnimal1(){

this.name="AAA";

this.legs=4;

}

publicAnimal1(Stringname,intlegs){

super();

this.name=name;

this.legs=legs;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicintgetLegs(){

returnlegs;

}

publicvoidsetLegs(intlegs){

this.legs=legs;

}

publicvoidmove(){

}

publicvoidmove(intn){

inti=1;

while(i<=n){

i++;

}

}

}

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

1提供一个构造方法,该构造方法需要一个参数name,并给legs赋默认值0;

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

XXXSwimming!

!

publicclassFishextendsAnimal{

privateStringname;

privateintlegs;

publicFish(Stringname){

this.name=name;

this.legs=0;

}

publicvoidmove(){

}

}

publicclassBirdextendsAnimal{

privateStringname;

privateintlegs;

publicBird(Stringname){

this.name=name;

this.legs=2;

}

publicvoidmove(){

}

}

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

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

publicclassZoo{

publicstaticvoidmain(String[]args){

Animala=newAni

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2