Java核心技术习题答案.docx
《Java核心技术习题答案.docx》由会员分享,可在线阅读,更多相关《Java核心技术习题答案.docx(78页珍藏版)》请在冰豆网上搜索。
![Java核心技术习题答案.docx](https://file1.bdocx.com/fileroot1/2022-12/17/38f68c2f-c182-49d1-a583-280a3bc0d455/38f68c2f-c182-49d1-a583-280a3bc0d4551.gif)
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;iSystem.out.print("\t");
}
//打印本月日?
for(inti=d1,j=1;iSystem.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;另一?
需要?
?
?
?
,分?
用?
?
?
?
?
?
私有?
性?
值。