Java核心技术习习题答案_第1页
Java核心技术习习题答案_第2页
Java核心技术习习题答案_第3页
Java核心技术习习题答案_第4页
Java核心技术习习题答案_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java核心技术习题答案马志强 张然 李雷孝 编清华大学出版社目 录88第一章Java语言概述3第二章 Java语法基础4第三章 面向对象编程15第四章 数组38第五章 高级类特性45第六章 GUI编程51第七章 集合框架62第九章 集合框架77第十章 IO流81第十一章 JDBC访问数据库84第十二章 线程85第十三章 网络编程90第一章Java语言概述1、 选择题1-5 ABBBB 6-8 AAB 2、 填空题1. MyClass MyClass.class 2. String数组(String) 一3. javac A.java java A三、程序设计题1、搭建Java运行环境,并写一

2、个Java程序打印输出“开始学习Java程序设计!”。1)首先安装JDK;2)配置环境变量path,classpath可配可不配;3)FirstJava.javapublic class HelloWorldpublic static void main(String args)System.out.println(开始学习Java程序设计!); 2、修改下面四个Java源文件中的错误,使其能够编译和运行。Test1.java:TestAnother1类不能再使用public修饰,一个源文件中只能有一个类或者接口用public修饰;Test2.java:源文件中public修饰的类的名字为Te

3、sting2,和源文件名字不一致;Test3.java:Test3类的main方法的形参类型为String;Test4.java:Test4类的main方法必须使用static关键字修饰。第二章 Java语法基础一、 选择题 1-5 BCADB 6-9 DCCC二、 填空题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、4 5. 2 2 false 26.m*20/100 (double)m*20/100三、 编程题1、由命令行输入一个成绩,使用switch结构求出成绩的等级。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、计算圆周率:PI44/3+4/5-4/7. .;

6、打印出第一个大于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、输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值。斐波那契数列: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+个值为:+n2);4、计算多项式1-1

8、/3+1/5-1/7+1/9.的值。 1)要求出前50项和值。 2)要求出最后一项绝对值小于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项和值:+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(最后一项绝对值小于1e-5的和值:+sum);5、产生100个0-999之间的随机整数,然后判断这100个随机整数哪些是素数,哪些不是?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+是素数!);elseSystem.out.println(num+不是素数!);System.out.println();public boolean isPrime(int num)for(int i=2;i=num/2;i+)if(num%i=0)System.out.println(num+第一个被+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、歌德巴赫猜想,任何一个大于六的偶数可以拆分成两个质数的和,打印出所有的可能。如输入10,结果为: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(错误的参数!);return;Gede g = new Gede();/因为1不是素数,n-2是偶数,所以从3开始循环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是否是素数 */public boolean isPrime(int num)for(i

13、nt i=2;i=num/2;i+)if(num%i=0)return false;return true;四、实训题万年历的设计与实现。本程序包含两个类CalenderModelA和TestCalenderModelA。CalenderModelA实现了赛事日期设置等主要功能,程序文件CalenderModelA .java。public class CalenderModelA/计算从公元始的天数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;/计算从公元始到今年之前的总天数for (int y = 1; y year; y+) total += (this.isLeapYear(y) 366 : 365);/计算今年到本月前的总天数for (int m = 1; m month; m+) total += (this.getTotalDaysOfMonth(year, m);/计算本月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);/计算某年某月天数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实现main方法,具有输入大赛起始和终止日期,输出日历,并计算大赛周期的功能。程序文件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);第三章 面向对象编程一、选择题1-5 CABDD 2-10 DCCBC11-12 CC二、填空题1. Package mypackage;2. final3. Object4. package im

20、port class5. c三、程序设计题2、按下列要求编写程序: 创建Teacher类 要求:Teacher类要描述姓名、年龄、薪水,类型分别为String、int、double 创建TeacherTest类 要求:在TeacherTest类中创建Teacher的对象;为该对象的属性(姓名、性别、年龄)赋值;将该对象的属性(姓名、性别、年龄)输出; 为Teacher类添加一个方法,用于在教师原有薪水的基础上增加5000; 修改TeacherTest类,增加对教师增加薪水方法的调用,并将增加后的薪水值输出。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、定义一个Person类。 包含以下属性:String name; int age; boolean gender; Person partner。 定义marry(Person p)方法,代表当前对象和p结婚,如若可

24、以结婚,则输出恭贺信息,否则输出不能结婚原因。下列情况不能结婚:结婚年龄,男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(同性不能结婚!);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(没有达到结婚年龄!);return;if(this.partner!=null | p.partner!=null)System.out.println(有一方

26、已经结婚!);return;System.out.println(+,++,+祝你们新婚愉快!);this.partner=p;p.partner=this;public static void main(String args)Person p1=new Person(关之琳,23,false,null);Person p2=new Person(刘德华,26,true,null);Person p3=new Person(孙楠,70,true,null);p1.marry(p2);p1.marry(p3);4、定义一个Animal类,该类有两个私有属性,nam

27、e(代表动物的名字)和legs(代表动物的腿的条数)。 两个构造方法,一个无参,默认给name赋值为AAA,给legs赋值为4;另一个需要两个参数,分别用这两个参数给私有属性赋值。 两个重载的move()方法,其中一个无参,在屏幕上输出一行文字: XXX Moving!(XXX为该动物的名字);另一个需要一个int参数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、定义一个Fish类,继承自Animal类。 提供一个构造方法,该构造方法需要一个参数name,并给legs赋默认值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、写一个类Zoo,要求分别生成若干个Animal、Fish和Bird。并调用他们的属性和方法。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) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。 SalariedEmployee:Emp

32、loyee的子类,拿固定工资的员工。属性:月薪; HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数; SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率。 BasedPlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。属性:底薪。写一个程序,把若干各种类型的员工放在一个Employee数组里,写一个函数,打印出某月每个员工的工资数额。注意:要求把每个类都做

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);四、实训题班级成绩管理系统实体类设计。public class Test public static void main(String args)Student stu =new Student(001,姚明);stu.setXueyuan(信息工程学院);stu.setZhuanye(软件工程);stu.setBanji(软件10-1);Grade stugrade =new Grade();stugrade.setKcm(Web程序设计);stugrade

40、.setXq(2011-2012(下);stugrade.setCj(90.5f);stu.getGrades().addGrade(stugrade);stugrade =new Grade();/加这一句的区别stugrade.setKcm(计算机网络);stugrade.setXq(2011-2012(上);stugrade.setCj(86.5f);stu.getGrades().addGrade(stugrade);stugrade =new Grade();/加这一句的区别stugrade.setKcm(计算机组成原理);stugrade.setXq(2011-2012(上);st

41、ugrade.setCj(66.5f);stu.getGrades().addGrade(stugrade);stugrade =new Grade();/加这一句的区别stugrade.setKcm(数据结构);stugrade.setXq(2010-2011(上);stugrade.setCj(76.5f);stu.getGrades().addGrade(stugrade);stugrade =new Grade();/加这一句的区别stugrade.setKcm(数据库原理);stugrade.setXq(2010-2011(下);stugrade.setCj(76.5f);stu.g

42、etGrades().addGrade(stugrade);stugrade =new Grade();/加这一句的区别stugrade.setKcm(高等数学(1));stugrade.setXq(2009-2010(上);stugrade.setCj(88.5f);stu.getGrades().addGrade(stugrade);stugrade =new Grade();/加这一句的区别stugrade.setKcm(高等数学(2));stugrade.setXq(2009-2010(下);stugrade.setCj(68.5f);stu.getGrades().addGrade(

43、stugrade);stugrade =new Grade();/加这一句的区别stugrade.setKcm(软件工程专业外语);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;/先使用具体的字符串,然后转化成编码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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论