Java核心技术习题答案马志强张然李雷孝编清华大学出版社目录第一章Java语言概述..........................................................................................3第二章Java语法基础.........................................................................................4第三章面向对象编程........................................................................................15第四章数组.....................................................................................................38第五章高级类特性...........................................................................................45第六章GUI编程...............................................................................................51第七章集合框架..............................................................................................62第九章集合框架..............................................................................................77第十章IO流....................................................................................................81第十一章JDBC访问数据库................................................................................84第十二章线程.................................................................................................85第十三章网络编程...........................................................................................90第一章Java语言概述一、选择题1-5ABBBB6-8AAB二、填空题1.MyClassMyClass.class2.String数组(String[])一3.javacA.javajavaA三、程序设计题1、搭建Java运行环境,并写一个Java程序打印输出“开始学习Java程序设计!”。1)首先安装JDK;2)配置环境变量path,classpath可配可不配;3)FirstJava.javapublicclassHelloWorld{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-5BCADB6-9DCCC二、填空题1.abc,a1,_abc,_1a,ab123#a,const,$abc,1abc,if,$#1sa,$_a,_$q12.题目出现问题:代码修改为ch=(char)(ch+1);结果为’B’;如果直接System.out.println(ch+1);结果为98。3.true(真)false(假)4.45.22false26.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(grade0||grade100){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(result3.1415&&result3.1416){System.out.println(result:+result);break;}}}}3、输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值。斐波那契数列:1、1、2、3、5、8、13、21、34、……。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(item0.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;i100;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=getTotalD