Java核心技術(shù)習(xí)習(xí)題答案_第1頁
Java核心技術(shù)習(xí)習(xí)題答案_第2頁
Java核心技術(shù)習(xí)習(xí)題答案_第3頁
Java核心技術(shù)習(xí)習(xí)題答案_第4頁
Java核心技術(shù)習(xí)習(xí)題答案_第5頁
已閱讀5頁,還剩86頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Java核心技術(shù)習(xí)題答案馬志強(qiáng) 張然 李雷孝 編清華大學(xué)出版社目 錄88第一章Java語言概述3第二章 Java語法基礎(chǔ)4第三章 面向?qū)ο缶幊?5第四章 數(shù)組38第五章 高級類特性45第六章 GUI編程51第七章 集合框架62第九章 集合框架77第十章 IO流81第十一章 JDBC訪問數(shù)據(jù)庫84第十二章 線程85第十三章 網(wǎng)絡(luò)編程90第一章Java語言概述1、 選擇題1-5 ABBBB 6-8 AAB 2、 填空題1. MyClass MyClass.class 2. String數(shù)組(String) 一3. javac A.java java A三、程序設(shè)計(jì)題1、搭建Java運(yùn)行環(huán)境,并寫一

2、個(gè)Java程序打印輸出“開始學(xué)習(xí)Java程序設(shè)計(jì)!”。1)首先安裝JDK;2)配置環(huán)境變量path,classpath可配可不配;3)FirstJava.javapublic class HelloWorldpublic static void main(String args)System.out.println(開始學(xué)習(xí)Java程序設(shè)計(jì)!); 2、修改下面四個(gè)Java源文件中的錯(cuò)誤,使其能夠編譯和運(yùn)行。Test1.java:TestAnother1類不能再使用public修飾,一個(gè)源文件中只能有一個(gè)類或者接口用public修飾;Test2.java:源文件中public修飾的類的名字為Te

3、sting2,和源文件名字不一致;Test3.java:Test3類的main方法的形參類型為String;Test4.java:Test4類的main方法必須使用static關(guān)鍵字修飾。第二章 Java語法基礎(chǔ)一、 選擇題 1-5 BCADB 6-9 DCCC二、 填空題1. abc ,a1, _abc, _1a, ab123 #a,const,$abc,1abc,if,$#1sa,$_a,_$q1 2. 題目出現(xiàn)問題:代碼修改為 ch = (char) (ch+1);結(jié)果為B;如果直接System.out.println(ch+1);結(jié)果為98。 3.true(真) false(假) 4.

4、4 5. 2 2 false 26.m*20/100 (double)m*20/100三、 編程題1、由命令行輸入一個(gè)成績,使用switch結(jié)構(gòu)求出成績的等級。A:90100;B:8089;C:7079;D:6069;E:059。import java.util.Scanner;public class IfElseTest public static void main(String args) Scanner sc = new Scanner(System.in);int grade = sc.nextInt();if(grade100)System.out.println(aaaa);S

5、ystem.exit(0);int temp =(int)Math.floor(grade/10);switch(temp)case 10:System.out.println(A);break;case 9:System.out.println(A);break;case 8:System.out.println(B);break;case 7:System.out.println(C);break;case 6:System.out.println(D);break;default:System.out.println(E);break;2、計(jì)算圓周率:PI44/3+4/5-4/7. .;

6、打印出第一個(gè)大于3.1415小于3.1416的值。public class PITestpublic static void main(String args)double result=0.0;for(int i=1;i+)double m=4.0/(2*i-1);if(i%2)=0)result-=m;elseresult+=m;if(result3.1415 & result3.1416)System.out.println(result: +result);break;3、輸入一個(gè)數(shù)據(jù)n,計(jì)算斐波那契數(shù)列(Fibonacci)的第n個(gè)值。斐波那契數(shù)列:1、1、2、3、5、8、13、21

7、、34、。import java.util.Scanner;public class FibonacciTestpublic static void main(String args)Scanner sn=new Scanner(System.in);int num=sn.nextInt();int i=1;int n1=1,n2=1;while(i=num)if(i=1|i=2)n2=1;elseint temp=n2;n2=n1+n2;n1=temp;i+;System.out.println(n2);System.out.println(第+num+個(gè)值為:+n2);4、計(jì)算多項(xiàng)式1-1

8、/3+1/5-1/7+1/9.的值。 1)要求出前50項(xiàng)和值。 2)要求出最后一項(xiàng)絕對值小于1e-5的和值。public class SumTestpublic static void main(String args)double sum=0.0;for(int i=1;i=50;i+)if(i%2=0)sum=sum-1.0/(2*i-1);elsesum=sum+1.0/(2*i-1);System.out.println(前50項(xiàng)和值:+sum);double item=0.0;int j=1;sum=0.0;while(item0.00001)item=1.0/(2*j-1);if(

9、j%2=0)sum-=item;elsesum+=item;j+;System.out.println(最后一項(xiàng)絕對值小于1e-5的和值:+sum);5、產(chǎn)生100個(gè)0-999之間的隨機(jī)整數(shù),然后判斷這100個(gè)隨機(jī)整數(shù)哪些是素?cái)?shù),哪些不是?public class PrimeTest public static void main(String args) PrimeTest t = new PrimeTest();for(int i=0;i100;i+)int num = (int)(Math.random()*1000);if(t.isPrime(num)System.out.printl

10、n(num+是素?cái)?shù)!);elseSystem.out.println(num+不是素?cái)?shù)!);System.out.println();public boolean isPrime(int num)for(int i=2;i=num/2;i+)if(num%i=0)System.out.println(num+第一個(gè)被+i+整除!);return false;return true;6、在屏幕上打印出n行的金字塔圖案,如,若n=3,則圖案如下: * * *import java.util.Scanner;public class PrintStarpublic static void main(

11、String args)Scanner sn=new Scanner(System.in);int rows=sn.nextInt();for(int i=1;i=rows;i+)for(int j=1;j=rows-i;j+)System.out.print( );for(int k=1;k=2*i-1;k+)System.out.print(*);System.out.println();7、歌德巴赫猜想,任何一個(gè)大于六的偶數(shù)可以拆分成兩個(gè)質(zhì)數(shù)的和,打印出所有的可能。如輸入10,結(jié)果為:10=5+5;10=3+7。public class Gede public static void m

12、ain(String args) int n = Integer.parseInt(args0);if(n=6 | n%2!=0)System.out.println(錯(cuò)誤的參數(shù)!);return;Gede g = new Gede();/因?yàn)?不是素?cái)?shù),n-2是偶數(shù),所以從3開始循環(huán)for(int i=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是否是素?cái)?shù) */public boolean isPrime(int num)for(i

13、nt i=2;i=num/2;i+)if(num%i=0)return false;return true;四、實(shí)訓(xùn)題萬年歷的設(shè)計(jì)與實(shí)現(xiàn)。本程序包含兩個(gè)類CalenderModelA和TestCalenderModelA。CalenderModelA實(shí)現(xiàn)了賽事日期設(shè)置等主要功能,程序文件CalenderModelA .java。public class CalenderModelA/計(jì)算從公元始的天數(shù)public int getNumberOfDay(int year, int month, int day)int total = 0;int limit = getTotalDaysOfMon

14、th(year, month);if(day=limit)for (int y = 1; y year; y+) total += (this.isLeapYear(year) 366 : 365);for (int m = 1; m month; m+) total += (this.getTotalDaysOfMonth(year, month);total+=day;return total;elseSystem.out.println(您輸入的日期非法);return -1;/打印萬年歷public void show(int year, int month) int total =

15、0;/計(jì)算從公元始到今年之前的總天數(shù)for (int y = 1; y year; y+) total += (this.isLeapYear(y) 366 : 365);/計(jì)算今年到本月前的總天數(shù)for (int m = 1; m month; m+) total += (this.getTotalDaysOfMonth(year, m);/計(jì)算本月1日是星期幾total = total % 7;int d1 = (total + 1) % 7;int d2 = this.getTotalDaysOfMonth(year, month);System.out.println(ttt + ye

16、ar + 年 + month + 月);System.out.println(-);String s = 日, 一, 二, 三, 四, 五, 六 ;for (int i = 0; i 7; i+) System.out.print(si + t);System.out.println();for(int i=0;id1;i+)System.out.print(t);/打印本月日歷for (int i = d1,j=1; i d1 + d2; i+,j+) System.out.print(j + t);if(i+1)%7 = 0)System.out.println();System.out.

17、println();/判斷是否為閏年public boolean isLeapYear(int year)return (year%4 = 0) & (year % 100 != 0) | (year % 400 = 0);/計(jì)算某年某月天數(shù)public int getTotalDaysOfMonth(int year, int month) int total = 0;switch (month) case 1:case 3:case 5:case 7:case 8:case 10:case 12:total = 31;break;case 2:total = this.isLeapYear

18、(year) 29 : 28;break;case 4:case 6:case 9:case 11:total = 30;break;return total;TestCalenderModelA實(shí)現(xiàn)main方法,具有輸入大賽起始和終止日期,輸出日歷,并計(jì)算大賽周期的功能。程序文件TestCalenderModelA .java。import java.util.Scanner;public class TestCalenderModelApublic static void main(String args) Scanner scan = new Scanner(System.in);Sys

19、tem.out.print(請輸入年份:);int year = scan.nextInt();System.out.print(請輸入月份:);int month = scan.nextInt();System.out.println(月歷如下);CalenderModelA testBegin = new CalenderModelA();testBegin.show(year, month);第三章 面向?qū)ο缶幊桃?、選擇題1-5 CABDD 2-10 DCCBC11-12 CC二、填空題1. Package mypackage;2. final3. Object4. package im

20、port class5. c三、程序設(shè)計(jì)題2、按下列要求編寫程序: 創(chuàng)建Teacher類 要求:Teacher類要描述姓名、年齡、薪水,類型分別為String、int、double 創(chuàng)建TeacherTest類 要求:在TeacherTest類中創(chuàng)建Teacher的對象;為該對象的屬性(姓名、性別、年齡)賦值;將該對象的屬性(姓名、性別、年齡)輸出; 為Teacher類添加一個(gè)方法,用于在教師原有薪水的基礎(chǔ)上增加5000; 修改TeacherTest類,增加對教師增加薪水方法的調(diào)用,并將增加后的薪水值輸出。Teacher.java:public class Teacher public Str

21、ing name;public int age;public double salary;public String getName() return name;public void setName(String name) = name;public int getAge() return age;public void setAge(int age) this.age = age;public double getSalary() return salary;public void setSalary(double salary) this.salary = sala

22、ry;public Teacher()public Teacher(String name,int age,double salary)=name;this.age=age;this.salary=salary;public void addSalary()this.salary=this.salary+5000;TeacherTest.java:public class TeacherTest public static void main(String args) Teacher teacher=new Teacher();teacher.age=35;teacher.n

23、ame=zhangsan;teacher.salary=1234.5;System.out.println(teacher.age);System.out.println();System.out.println(teacher.salary);teacher.addSalary();System.out.println(teacher.salary);3、定義一個(gè)Person類。 包含以下屬性:String name; int age; boolean gender; Person partner。 定義marry(Person p)方法,代表當(dāng)前對象和p結(jié)婚,如若可

24、以結(jié)婚,則輸出恭賀信息,否則輸出不能結(jié)婚原因。下列情況不能結(jié)婚:結(jié)婚年齡,男24,女22;3,某一方已婚。 定義測試類,來測試以上程序。public class Personprivate String name;private int age;private boolean gender;Person partner;public Person(String name,int age,boolean gender,Person partner)=name;this.age=age;this.gender=gender;this.partner=partner;public

25、void marry(Person p)if(this.gender=p.gender)System.out.println(同性不能結(jié)婚!);return;if(this.gender=true & this.age24)|(this.gender=false & this.age22)| (p.gender=true & p.age24) | (p.gender=false & p.age22)System.out.println(沒有達(dá)到結(jié)婚年齡!);return;if(this.partner!=null | p.partner!=null)System.out.println(有一方

26、已經(jīng)結(jié)婚!);return;System.out.println(+,++,+祝你們新婚愉快!);this.partner=p;p.partner=this;public static void main(String args)Person p1=new Person(關(guān)之琳,23,false,null);Person p2=new Person(劉德華,26,true,null);Person p3=new Person(孫楠,70,true,null);p1.marry(p2);p1.marry(p3);4、定義一個(gè)Animal類,該類有兩個(gè)私有屬性,nam

27、e(代表動(dòng)物的名字)和legs(代表動(dòng)物的腿的條數(shù))。 兩個(gè)構(gòu)造方法,一個(gè)無參,默認(rèn)給name賦值為AAA,給legs賦值為4;另一個(gè)需要兩個(gè)參數(shù),分別用這兩個(gè)參數(shù)給私有屬性賦值。 兩個(gè)重載的move()方法,其中一個(gè)無參,在屏幕上輸出一行文字: XXX Moving!(XXX為該動(dòng)物的名字);另一個(gè)需要一個(gè)int參數(shù)n,在屏幕上輸出n次 XXX Moving!public class Animal1 private String name;private int legs;public Animal1()=AAA;this.legs=4;public Animal1(Str

28、ing name,int legs)super();=name;this.legs=legs;public String getName() return name;public void setName(String name) = name;public int getLegs() return legs;public void setLegs(int legs) this.legs = legs;public void move()System.out.println(Animal moving!);public void move(int n)in

29、t i=1;while(i=n)System.out.println(Animal moving!);i+;5、定義一個(gè)Fish類,繼承自Animal類。 提供一個(gè)構(gòu)造方法,該構(gòu)造方法需要一個(gè)參數(shù)name,并給legs賦默認(rèn)值0; 覆蓋Animal類中的無參move()方法,要求輸出:XXX Swimming!public class Fish extends Animal private String name;private int legs;public Fish(String name)=name;this.legs=0;public void move()Syste

30、m.out.println(Fish is swimming!);public class Bird extends Animal private String name;private int legs;public Bird(String name)=name;this.legs=2;public void move()System.out.println(Bird is flying!);6、寫一個(gè)類Zoo,要求分別生成若干個(gè)Animal、Fish和Bird。并調(diào)用他們的屬性和方法。public class Zoo public static void main(Str

31、ing args) Animal a=new Animal(dog,4);a.move();a.move(3);Fish f=new Fish(small fish);f.move();Bird b=new Bird(xique);b.move();Animal af=new Fish(small fish);af.move();7、某公司的雇員分為以下若干類: Employee:這是所有員工總的父類,屬性:員工的姓名,員工的生日月份。方法:getSalary(int month) 根據(jù)參數(shù)月份來確定工資,如果該月員工過生日,則公司會額外獎(jiǎng)勵(lì)100元。 SalariedEmployee:Emp

32、loyee的子類,拿固定工資的員工。屬性:月薪; HourlyEmployee:Employee的子類,按小時(shí)拿工資的員工,每月工作超出160小時(shí)的部分按照1.5倍工資發(fā)放。屬性:每小時(shí)的工資、每月工作的小時(shí)數(shù); SalesEmployee:Employee的子類,銷售人員,工資由月銷售額和提成率決定。屬性:月銷售額、提成率。 BasedPlusSalesEmployee:SalesEmployee的子類,有固定底薪的銷售人員,工資由底薪加上銷售提成部分。屬性:底薪。寫一個(gè)程序,把若干各種類型的員工放在一個(gè)Employee數(shù)組里,寫一個(gè)函數(shù),打印出某月每個(gè)員工的工資數(shù)額。注意:要求把每個(gè)類都做

33、成完全封裝,不允許非私有化屬性。class Employeeprivate String name;private int month;public Employee(String name,int month)=name;this.month=month;public String getName()return name;public double getSalary(int month)if(this.month=month)return 100.0;return 0.0;class SalariedEmployee extends Employeeprivate do

34、uble monthSalary;public SalariedEmployee(String name,int month,double monthSalary)super(name,month);this.monthSalary=monthSalary;public double getSalary(int month)return monthSalary+super.getSalary(month);class HourlyEmployee extends Employeeprivate int hours;private double hourSalary;public HourlyE

35、mployee(String name,int month,int hours,double hourSalary)super(name,month);this.hours=hours;this.hourSalary=hourSalary;public double getSalary(int month)double result;if(hours=160)result=hours*hourSalary;elseresult=160*hourSalary+(hours-160)*1.5*hourSalary;return result+super.getSalary(month);class

36、 SalesEmployee extends Employeeprivate double salesCount;private double rate;public SalesEmployee(String name,int month,double salesCount,double rate)super(name,month);this.salesCount=salesCount;this.rate=rate;public double getSalary(int month)return salesCount*rate+super.getSalary(month);class Base

37、dPlusSalesEmployee extends SalesEmployee private double basedPlus;public BasedPlusSalesEmployee(String name,int month,double salesCount,double rate,double basedPlus)super(name,month,salesCount,rate);this.basedPlus=basedPlus;public double getSalary(int month)return basedPlus+super.getSalary(month);pu

38、blic class EmployeeTestpublic static void main(String args)Employee e=new Employee4;e0=new SalariedEmployee(zhangsan,9,3222.90);e1=new HourlyEmployee(lisi,5,230,23.90); e2=new SalesEmployee(wangwu,11,2330000.0,0.005);e3=new BasedPlusSalesEmployee(zhaoliu,2,2000000.0,0.0001,3200.0);for(int i=0;ie.len

39、gth;i+)System.out.println(ei.getName()+ +9月份的工資總額為:+ei.getSalary(9);四、實(shí)訓(xùn)題班級成績管理系統(tǒng)實(shí)體類設(shè)計(jì)。public class Test public static void main(String args)Student stu =new Student(001,姚明);stu.setXueyuan(信息工程學(xué)院);stu.setZhuanye(軟件工程);stu.setBanji(軟件10-1);Grade stugrade =new Grade();stugrade.setKcm(Web程序設(shè)計(jì));stugrade

40、.setXq(2011-2012(下);stugrade.setCj(90.5f);stu.getGrades().addGrade(stugrade);stugrade =new Grade();/加這一句的區(qū)別stugrade.setKcm(計(jì)算機(jī)網(wǎng)絡(luò));stugrade.setXq(2011-2012(上);stugrade.setCj(86.5f);stu.getGrades().addGrade(stugrade);stugrade =new Grade();/加這一句的區(qū)別stugrade.setKcm(計(jì)算機(jī)組成原理);stugrade.setXq(2011-2012(上);st

41、ugrade.setCj(66.5f);stu.getGrades().addGrade(stugrade);stugrade =new Grade();/加這一句的區(qū)別stugrade.setKcm(數(shù)據(jù)結(jié)構(gòu));stugrade.setXq(2010-2011(上);stugrade.setCj(76.5f);stu.getGrades().addGrade(stugrade);stugrade =new Grade();/加這一句的區(qū)別stugrade.setKcm(數(shù)據(jù)庫原理);stugrade.setXq(2010-2011(下);stugrade.setCj(76.5f);stu.g

42、etGrades().addGrade(stugrade);stugrade =new Grade();/加這一句的區(qū)別stugrade.setKcm(高等數(shù)學(xué)(1));stugrade.setXq(2009-2010(上);stugrade.setCj(88.5f);stu.getGrades().addGrade(stugrade);stugrade =new Grade();/加這一句的區(qū)別stugrade.setKcm(高等數(shù)學(xué)(2));stugrade.setXq(2009-2010(下);stugrade.setCj(68.5f);stu.getGrades().addGrade(

43、stugrade);stugrade =new Grade();/加這一句的區(qū)別stugrade.setKcm(軟件工程專業(yè)外語);stugrade.setXq(2011-2012(下);stugrade.setCj(88.0f);stu.getGrades().addGrade(stugrade);puteZc(2011-2012(下);stu.getGrades().sortByxq();System.out.println(stu);public class Studentpublic static long id=001l;private String sid;private Stri

44、ng sname;private String xueyuan;/先使用具體的字符串,然后轉(zhuǎn)化成編碼xyidprivate String zhuanye;private String banji;/private GradeArray grades;private ZcGrade zcGrade;private void autoId()id+;public Student() sid = new Long(id).toString();autoId();grades = new GradeArray();public Student(String sid)this(sid,null);pub

45、lic Student(String sid,String sname)this(sid,sname,null);public Student(String sid,String sname,String xueyuan)this.sid = sid;this.sname = sname;this.xueyuan =xueyuan;grades = new GradeArray();public String getSid() return sid;public void setSid(String sid) this.sid = sid;public String getSname() re

46、turn sname;public void setSname(String sname) this.sname = sname;public String getXueyuan() return xueyuan;public void setXueyuan(String xueyuan) this.xueyuan = xueyuan;public String getZhuanye() return zhuanye;public void setZhuanye(String zhuanye) this.zhuanye = zhuanye;public String getBanji() re

47、turn banji;public void setBanji(String banji) this.banji = banji;public GradeArray getGrades() return grades;public void setGrades(GradeArray grades) this.grades = grades;public ZcGrade getZcGrade() return zcGrade;public void setZcGrade(ZcGrade zcGrade) this.zcGrade = zcGrade;public void computeZc(String xqid)zcGrade = new ZcGrade(xqid);float sum = 0;for(int i=0;igrades.getCurrent();i+)if(xqid.equals(grades.ge

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論