2023年12月14日发(作者:庆组词)
Java核心技术
习题答案
马志强 张然 李雷孝 编
清华大学出版社
目 录
第一章Java语言概述 ................................................................................................................ 3
第二章 Java语法基础 ................................................................................................................ 4
第三章 面向对象编程 .............................................................................................................. 15
第四章 数组 ................................................................................................................................ 38
第五章 高级类特性 .................................................................................................................. 45
第六章 GUI编程 ....................................................................................................................... 51
第七章 集合框架 ....................................................................................................................... 62
第九章 集合框架 ....................................................................................................................... 77
第十章 IO流 .............................................................................................................................. 81
第十一章 JDBC访问数据库 .................................................................................................. 84
第十二章 线程 ........................................................................................................................... 85 第十三章 网络编程 .................................................................................................................. 90 第一章Java语言概述
一、选择题
1-5 ABBBB
6-8 AAB
二、填空题
1. MyClass
2. String数组(String[]) 一
3. javac java A
三、程序设计题
1、搭建Java运行环境,并写一个Java程序打印输出“开始学习Java程序设计!”。
1)首先安装JDK;
2)配置环境变量path,classpath可配可不配;
3)
public class HelloWorld{
public static void main(String[] args){
}
}
2、修改下面四个Java源文件中的错误,使其能够编译和运行。
开始学习Java程序设计!"); :TestAnother1类不能再使用public修饰,一个源文件中只能有一个类或者接口用public修饰;
:源文件中public修饰的类的名字为Testing2,和源文件名字不一致;
:Test3类的main方法的形参类型为String[];
: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’;如果直接结果为98。
(真) fal(假)
4.4
5. 2 2 fal 2
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。
public class IfElTest {
public static void main(String[] args) {
Scanner sc = new Scanner();
int grade = t();
if(grade<0 || grade>100){
}
int temp =(int)(grade/10);
switch(temp){
ca 10:{
}
ca 9:{
}
ca 8:{
}
ca 7:{
}
ca 6:{
break;
break;
break;
break;
break;
(0);
}
}
}
}
default:{
}
break;
2、计算圆周率:PI=4-4/3+4/ ...;打印出第一个大于3.1415小于3.1416的值。
public class PITest{
public 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){
}el{
}
if(result>3.1415 && result<3.1416){
result+=m;
result-=m;
}
}
}
}
break;
3、输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值。斐波那契数列:1、1、2、3、5、8、13、21、34、……。
public class FibonacciTest{
public static void main(String[] args){
Scanner sn=new Scanner();
int num=t();
int i=1;
int n1=1,n2=1;
while(i<=num){
if(i==1||i==2){
}el{
int temp=n2;
n2=n1+n2;
n1=temp;
n2=1;
}
}
}
}
i++;
第"+num+"个值为:"+n2);
4、计算多项式1-1/3+1/5-1/7+的值。
1)要求出前50项和值。
2)要求出最后一项绝对值小于1e-5的和值。
public class SumTest{
public static void main(String[] args){
double sum=0.0;
for(int i=1;i<=50;i++){
}
if(i%2==0){
}el{
}
sum=sum+1.0/(2*i-1);
sum=sum-1.0/(2*i-1);
}
}
前50项和值:"+sum);
double item=0.0;
int j=1;
sum=0.0;
while(item<0.00001){
}
最后一项绝对值小于1e-5的和值:"+sum);
item=1.0/(2*j-1);
if(j%2==0){
}el{
}
j++;
sum+=item;
sum-=item;
5、产生100个0-999之间的随机整数,然后判断这100个随机整数哪些是素数,哪些不是?
public class PrimeTest {
public static void main(String[] args) {
}
PrimeTest t = new PrimeTest();
for(int i=0;i<100;i++){
}
int num = (int)(()*1000);
if(e(num)){
}el{
}
不是素数!");
是素数!");
public boolean isPrime(int num){
}
for(int i=2;i<=num/2;i++){
}
return true;
if(num%i==0){
}
第一个被"+i+"整除!");
return fal; }
6、在屏幕上打印出n行的金字塔图案,如,若n=3,则图案如下:
*
***
*****
public class PrintStar{
public static void main(String[] args){
}
}
7、歌德巴赫猜想,任何一个大于六的偶数可以拆分成两个质数的和,打印出所有的可能。如输入10,结果为:10=5+5;10=3+7。
public class Gede {
Scanner sn=new Scanner();
int rows=t();
for(int i=1;i<=rows;i++){
}
for(int j=1;j<=rows-i;j++){
}
for(int k=1;k<=2*i-1;k++){
} public static void main(String[] args) {
}
/**
* 判断num是否是素数
*/
int n = nt(args[0]);
if(n<=6 || n%2!=0){
}
Gede g = new Gede();
//因为1不是素数,n-2是偶数,所以从3开始循环
for(int i=3;i<=n/2;i++){
}
if(i%2==0){
}
if(e(i) && e(n-i)){
}
continue;
错误的参数!");
return; public boolean isPrime(int num){
}
}
四、实训题
万年历的设计与实现。
本程序包含两个类CalenderModelA和TestCalenderModelA。
for(int i=2;i<=num/2;i++){
}
return true;
if(num%i==0){
}
return fal;
CalenderModelA实现了赛事日期设置等主要功能,程序文件CalenderModelA .java。
public class CalenderModelA
{
//计算从公元始的天数
public int getNumberOfDay(int year, int month, int day)
{ int total = 0;
int limit = getTotalDaysOfMonth(year, month);
if(day<=limit)
{
for (int y = 1; y < year; y++)
{
total += (Year(year) ? 366 : 365);
}
for (int m = 1; m < month; m++)
{
total += (alDaysOfMonth(year, month));
}
total+=day;
return total;
} el
{
您输入的日期非法");
return -1;
}
}
//打印万年历
public void show(int year, int month)
{
int total = 0;
//计算从公元始到今年之前的总天数
for (int y = 1; y < year; y++)
{
total += (Year(y) ? 366 : 365);
} //计算今年到本月前的总天数
for (int m = 1; m < month; m++)
{
total += (alDaysOfMonth(year, m));
}
//计算本月1日是星期几
total = total % 7;
int d1 = (total + 1) % 7;
int d2 = alDaysOfMonth(year, month);
年" + month + "月");
String[] s = { "日", "一", "二", "三", "四", "五", "六" };
for (int i = 0; i < 7; i++) {
}
for(int i=0;i } //打印本月日历 for (int i = d1,j=1; i < d1 + d2; i++,j++) { if((i+1)%7 == 0){ } } } //判断是否为闰年 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) { ca 1: ca 3: ca 5: ca 7: ca 8: ca 10: ca 12: total = 31; break; ca 2: total = Year(year) ? 29 : 28; break; ca 4: ca 6: ca 9: ca 11: total = 30; break; } return total; } } TestCalenderModelA实现main方法,具有输入大赛起始和终止日期,输出日历,并计算大赛周期的功能。程序文件TestCalenderModelA .java。 public class TestCalenderModelA { public static void main(String[] args) { Scanner scan = new Scanner(); 请输入年份:"); int year = t(); 请输入月份:"); int month = t(); 月历如下"); CalenderModelA testBegin = new CalenderModelA(); (year, month); } } 第三章 面向对象编程 一、选择题 1-5 CABDD 2-10 DCCBC 11-12 CC 二、填空题 e mypackage?; e import class 5.c 三、程序设计题 2、按下列要求编写程序: ① ② 创建Teacher类 要求:Teacher类要描述姓名、年龄、薪水,类型分别为String、int、double 创建TeacherTest类 要求:在TeacherTest类中创建Teacher的对象;为该对象的属性(姓名、性别、年龄)赋值;将该对象的属性(姓名、性别、年龄)输出; ③ ④ 出。 : public class Teacher { public String name; public int age; public double salary; public String getName() { } public void tName(String name) { } public int getAge() { } public void tAge(int age) { return age; = name; return name; 为Teacher类添加一个方法,用于在教师原有薪水的基础上增加5000; 修改TeacherTest类,增加对教师增加薪水方法的调用,并将增加后的薪水值输 } } = age; public double getSalary() { } public void tSalary(double salary) { } public Teacher(){ } public Teacher(String name,int age,double salary){ } public void addSalary(){ } =+5000; =name; =age; =salary; = salary; return salary; : public class TeacherTest { } 3、定义一个Person类。 ① ② 包含以下属性:String name; int age; boolean gender; Person partner。 定义marry(Person p)方法,代表当前对象和p结婚,如若可以结婚,则输出恭贺信public static void main(String[] args) { } Teacher teacher=new Teacher(); =35; ="zhangsan"; =1234.5; ary(); 息,否则输出不能结婚原因。下列情况不能结婚:结婚年龄,男<24,女<22;3,某一方已婚。 ③ 定义测试类,来测试以上程序。 public class Person{ private String name; private int age; private boolean gender; Person partner; public Person(String name,int age,boolean gender,Person partner){ } public void marry(Person p){ if(==){ } if((==true && <24)||(==fal && <22) } if(r!=null || r!=null){ 有一方已经结婚!"); || (==true && <24) || (==fal && <22)){ 没有达到结婚年龄!"); return; 同性不能结婚!"); return; =name; =age; =gender; r=partner; } } } return; 祝你们新婚愉快!"); r=p; r=this; public static void main(String[] args){ } Person p1=new Person("关之琳",23,fal,null); Person p2=new Person("刘德华",26,true,null); Person p3=new Person("孙楠",70,true,null); (p2); (p3); 4、定义一个Animal类,该类有两个私有属性,name(代表动物的名字)和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(){ } public Animal1(String name,int legs){ } super(); =name; =legs; ="AAA"; =4; public String getName() { } public void tName(String name) { } public int getLegs() { = name; return name; } } return legs; public void tLegs(int legs) { } public void move(){ } public void move(int n){ } int i=1; while(i<=n){ } i++; = legs; 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){ } public void move(){ } =name; =0; public class Bird extends Animal { } 6、写一个类Zoo,要求分别生成若干个Animal、Fish和Bird。并调用他们的属性和方法。 private String name; private int legs; public Bird(String name){ } public void move(){ } =name; =2; public class Zoo { } 7、某公司的雇员分为以下若干类: ① Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:public static void main(String[] args) { } Animal a=new Animal("dog",4); (); (3); Fish f=new Fish("small fish"); (); Bird b=new Bird("xique"); (); Animal af=new Fish("small fish"); (); getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。 ② ③ SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪; HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数; ④ SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率。 ⑤ BadPlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。属性:底薪。 写一个程序,把若干各种类型的员工放在一个Employee数组里,写一个函数,打印出某月每个员工的工资数额。注意:要求把每个类都做成完全封装,不允许非私有化属性。 class Employee{ private String name; private int month; public Employee(String name,int month){ } public String getName(){ } public double getSalary(int month){ if(==month){ } return 0.0; return 100.0; return name; =name; =month; } } class SalariedEmployee extends Employee{ } class HourlyEmployee extends Employee{ private int hours; private double hourSalary; public HourlyEmployee(String name,int month,int hours,double hourSalary){ super(name,month); =hours; lary=hourSalary; private double monthSalary; public SalariedEmployee(String name,int month,double monthSalary){ } public double getSalary(int month){ } return monthSalary+ary(month); super(name,month); alary=monthSalary; } } public double getSalary(int month){ } double result; if(hours<=160){ }el{ } return result+ary(month); result=160*hourSalary+(hours-160)*1.5*hourSalary; result=hours*hourSalary; class SalesEmployee extends Employee{ private double salesCount; private double rate; public SalesEmployee(String name,int month,double salesCount,double rate){ } super(name,month); ount=salesCount; =rate; public double getSalary(int month){ return salesCount*rate+ary(month); } } class BadPlusSalesEmployee extends SalesEmployee { private double badPlus; public BadPlusSalesEmployee(String name,int month,double rate,double badPlus){ super(name,month,salesCount,rate); lus=badPlus; } public double getSalary(int month){ return badPlus+ary(month); } } public class EmployeeTest{ public static void main(String[] args){ Employee[] e=new Employee[4]; e[0]=new SalariedEmployee("zhangsan",9,3222.90); e[1]=new HourlyEmployee("lisi",5,230,23.90); salesCount,double } e[2]=new SalesEmployee("wangwu",11,2330000.0,0.005); } e[3]=new BadPlusSalesEmployee("zhaoliu",2,2000000.0,0.0001,3200.0); for(int i=0;i<;i++){ } 月份的工资总额为:"+e[i].getSalary(9)); 四、实训题 班级成绩管理系统实体类设计。 public class Test { public static void main(String[] args){ yuan("信息工程学院"); anye("软件工程"); ji("软件10-1"); Grade stugrade =new Grade(); ("Web程序设计"); ("2011-2012(下)"); (90.5f); des().addGrade(stugrade); stugrade =new Grade();//加这一句的区别 ("计算机网络"); ("2011-2012(上)"); (86.5f); des().addGrade(stugrade); stugrade =new Grade();//加这一句的区别 ("计算机组成原理"); ("2011-2012(上)"); (66.5f); des().addGrade(stugrade); stugrade =new Grade();//加这一句的区别 ("数据结构"); ("2010-2011(上)"); (76.5f); des().addGrade(stugrade); stugrade =new Grade();//加这一句的区别 ("数据库原理"); ("2010-2011(下)"); (76.5f); } des().addGrade(stugrade); stugrade =new Grade();//加这一句的区别 ("高等数学(1)"); ("2009-2010(上)"); (88.5f); des().addGrade(stugrade); stugrade =new Grade();//加这一句的区别 ("高等数学(2)"); ("2009-2010(下)"); (68.5f); des().addGrade(stugrade); stugrade =new Grade();//加这一句的区别 ("软件工程专业外语"); ("2011-2012(下)"); (88.0f); des().addGrade(stugrade); eZc("2011-2012(下)"); des().sortByxq(); } public class Student{ private String sid; private String sname; private String xueyuan;//先使用具体的字符串,然后转化成编码xyid private String zhuanye; private String banji; // private GradeArray grades; private ZcGrade zcGrade; private void autoId(){ } public Student() { } public Student(String sid){ sid = new Long(id).toString(); autoId(); grades = new GradeArray(); id++; } this(sid,null); public Student(String sid,String sname){ } public Student(String sid,String sname,String xueyuan){ } public String getSid() { } public void tSid(String sid) { } public String getSname() { return sname; = sid; return sid; = sid; = sname; n =xueyuan; grades = new GradeArray(); this(sid,sname,null); } public void tSname(String sname) { } public String getXueyuan() { } public void tXueyuan(String xueyuan) { } public String getZhuanye() { } public void tZhuanye(String zhuanye) { } public String getBanji() { } return banji; e = zhuanye; return zhuanye; n = xueyuan; return xueyuan; = sname; public void tBanji(String banji) { } public GradeArray getGrades() { } public void tGrades(GradeArray grades) { } public ZcGrade getZcGrade() { } public void tZcGrade(ZcGrade zcGrade) { } public void computeZc(String xqid){ zcGrade = new ZcGrade(xqid); float sum = 0; for(int i=0;i e = zcGrade; return zcGrade; = grades; return grades; = banji; } } if((de()[i].getXq())){ } sum += de()[i].getCj(); esult(sum); @Override public boolean equals(Object obj) { // TODO Auto-generated method stub boolean result = fal; if(obj!=null){ if(obj instanceof Student){ } } return result; Student temp = (Student) obj; if(()){ } result = true; } @Override public String toString() { // TODO Auto-generated method stub String result = "{"+sid+"r"; /*for(KsGrade temp:de()){ }*/ for(int i= 0;i } //result = ing(0, ()-1);//去掉最后一个逗号 result += zcGrade; result +="}"; result +="["; result += de()[i]; result +="]"; result +="r"; result +="["; result += temp; result +="],"; } } return result; public class Grade { private String kcm; private String xq; private float cj; public Grade() { } public Grade(String kcm){ } public Grade(String kcm,String xq){ } public Grade(String kcm,String xq,float cj){ = kcm; = xq; this(kcm,xq,0.0f); this(kcm,null); super(); } =cj; public float getCj() { } public void tCj(float cj) { } public String getKcm() { } public void tKcm(String kcm) { } public String getXq() { } public void tXq(String xq) { = xq; return xq; = kcm; return kcm; = cj; return cj; } @Override public String toString() { } @Override public boolean equals(Object obj) { // TODO Auto-generated method stub boolean result =fal; if(obj!=null){ if(obj instanceof Grade){ } } return result; Grade temp = (Grade)obj; if(()){ } result = true; // TODO Auto-generated method stub return kcm+":"+xq+":"+cj; } } public class GradeArray { public final static int KECHMENSHU = 50; private Grade[] grades = new Grade[KECHMENSHU]; private int current =0; public GradeArray() { } public int getCurrent() { } public void tCurrent(int current) { } public void addGrade(Grade g){ //存在问题:课程重复 if(current t = current; return current; super(); if(!contain(g)){ } } grades[current++] = g; } public Grade[] getGrade() { } public void tGrade(Grade[] grade) { } private boolean contain(Grade g){ boolean result = fal; for(int i = 0;i } if(grades[i].equals(g)){ } result = true; break; = grade; return grades; return result; -
本文发布于:2023-12-14 05:12:11,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1702501932245878.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:java核心技术习题答案.doc
本文 PDF 下载地址:java核心技术习题答案.pdf
留言与评论(共有 0 条评论) |