java核心技术习题答案

更新时间:2023-12-14 05:12:12 阅读: 评论:0

2023年12月14日发(作者:庆组词)

-

java核心技术习题答案

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;

-

java核心技术习题答案

本文发布于:2023-12-14 05:12:11,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/1702501932245878.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:java核心技术习题答案.doc

本文 PDF 下载地址:java核心技术习题答案.pdf

上一篇:法语职业词汇
下一篇:返回列表
标签:属性   员工   方法   工资
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|