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,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/1702501932245878.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:java核心技術習題答案.doc
本文 PDF 下載地址:java核心技術習題答案.pdf
| 留言與評論(共有 0 條評論) |