Java核心技术习题答案.docx

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

Java核心技术习题答案.docx

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

Java核心技术习题答案.docx

Java核心技术习题答案

 

Java核心技术

习题答案

 

马志强张然李雷孝编

 

清华大学出版社

第一章Java语言概述

1、?

?

?

1-5ABBBB

6-8AAB

2、填空?

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){

System.out.println("?

始?

?

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’;如果直接System.out.println(ch+1);?

果?

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。

importjava.util.Scanner;

publicclassIfElseTest{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

intgrade=sc.nextInt();

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

System.out.println("aaaa");

System.exit(0);

}

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

switch(temp){

case10:

{

System.out.println("A");

break;

}

case9:

{

System.out.println("A");

break;

}

case8:

{

System.out.println("B");

break;

}

case7:

{

System.out.println("C");

break;

}

case6:

{

System.out.println("D");

break;

}

default:

{

System.out.println("E");

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){

System.out.println("result:

"+result);

break;

}

}

}

}

3、?

入一?

?

据n,?

算斐波那契?

列(Fibonacci)的第n?

值。

斐波那契?

列:

1、1、2、3、5、8、13、21、34、¡K¡K。

importjava.util.Scanner;

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++;

System.out.println(n2);

}

System.out.println("第"+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);

}

}

System.out.println("前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++;

}

System.out.println("最后一?

?

?

值小于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)){

System.out.println(num+"是素?

");

}else{

System.out.println(num+"不是素?

");

}

System.out.println();

}

}

publicbooleanisPrime(intnum){

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

if(num%i==0){

System.out.println(num+"第一?

被"+i+"整除!

");

returnfalse;

}

}

returntrue;

}

}

6、在屏幕上打印出n行的金字塔?

案,如,若n=3,?

?

案如下:

*

***

*****

importjava.util.Scanner;

publicclassPrintStar{

publicstaticvoidmain(String[]args){

Scannersn=newScanner(System.in);

introws=sn.nextInt();

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

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

System.out.print("");

}

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

System.out.print("*");

}

System.out.println();

}

}

}

7、歌德巴赫猜想,任何一?

大于六的偶?

可以拆分成?

?

?

?

的和,打印出所有的可能。

如?

入10,?

果?

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

publicclassGede{

publicstaticvoidmain(String[]args){

intn=Integer.parseInt(args[0]);

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

=0){

System.out.println("?

?

的?

?

");

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)){

System.out.println(i+"+"+(n-i)+"="+n);

}

}

}

/**

*判?

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

{

System.out.println("您?

入的日期非法");

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

System.out.println("\t\t\t"+year+"年"+month+"月");

System.out.println("--------------------------------------------------");

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

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

System.out.print(s[i]+"\t");

}

System.out.println();

for(inti=0;i

System.out.print("\t");

}

//打印本月日?

for(inti=d1,j=1;i

System.out.print(j+"\t");

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

System.out.println();

}

}

System.out.println();

}

//判?

是否?

?

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。

importjava.util.Scanner;

publicclassTestCalenderModelA

{

publicstaticvoidmain(String[]args)

{

Scannerscan=newScanner(System.in);

System.out.print("?

?

入年份:

");

intyear=scan.nextInt();

System.out.print("?

?

入月份:

");

intmonth=scan.nextInt();

System.out.println("月?

如下");

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;

System.out.println(teacher.age);

System.out.println(teacher.name);

System.out.println(teacher.salary);

teacher.addSalary();

System.out.println(teacher.salary);

}

}

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){

System.out.println("同性不能?

婚!

");

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)){

System.out.println("?

有?

到?

婚年?

");

return;

}

if(this.partner!

=null||p.partner!

=null){

System.out.println("有一方已?

?

婚!

");

return;

}

System.out.println(this.name+","+p.name+","+"祝你?

新婚愉快!

");

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;另一?

需要?

?

?

?

,分?

用?

?

?

?

?

?

私有?

性?

值。

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

当前位置:首页 > 医药卫生

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

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