Java核心技术习题答案.docx
- 文档编号:12512444
- 上传时间:2023-04-19
- 格式:DOCX
- 页数:91
- 大小:146.39KB
Java核心技术习题答案.docx
《Java核心技术习题答案.docx》由会员分享,可在线阅读,更多相关《Java核心技术习题答案.docx(91页珍藏版)》请在冰豆网上搜索。
Java核心技术习题答案
Java核心技术习题答案
Java核心技术
习题答案
马志强张然李雷孝编
清华大学出版社
inttemp=(int)Math.floor(grade/10);
switch(temp){
case10:
{
System.out.println("A");
break;
}
case9:
{
System.out.println("A");
break;
}
case8:
{
System.out.println("B");
break;
}
case7:
{
System.out.println("C");
break;
}
case6:
{
System.out.println("D");
break;
}
default:
{
System.out.println("E");
break;
}
}
}
}
2、计算圆周率:
PI=4-4/3+4/5-4/7......;打印出第一个大于3.1415小于3.1416的值。
publicclassPITest{
publicstaticvoidmain(String[]args){
doubleresult=0.0;
for(inti=1;;i++){
doublem=4.0/(2*i-1);
if((i%2)==0){
result-=m;
}else{
result+=m;
}
if(result>3.1415&&result<3.1416){
System.out.println("result:
"+result);
break;
}
}
}
}
3、输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值。
斐波那契数列:
1、1、2、3、5、8、13、21、34、……。
importjava.util.Scanner;
publicclassFibonacciTest{
publicstaticvoidmain(String[]args){
Scannersn=newScanner(System.in);
intnum=sn.nextInt();
inti=1;
intn1=1,n2=1;
while(i<=num){
if(i==1||i==2){
n2=1;
}else{
inttemp=n2;
n2=n1+n2;
n1=temp;
}
i++;
System.out.println(n2);
}
System.out.println("第"+num+"个值为:
"+n2);
}
}
4、计算多项式1-1/3+1/5-1/7+1/9......的值。
1)要求出前50项和值。
2)要求出最后一项绝对值小于1e-5的和值。
publicclassSumTest{
publicstaticvoidmain(String[]args){
doublesum=0.0;
for(inti=1;i<=50;i++){
if(i%2==0){
sum=sum-1.0/(2*i-1);
}else{
sum=sum+1.0/(2*i-1);
}
}
System.out.println("前50项和值:
"+sum);
doubleitem=0.0;
intj=1;
sum=0.0;
while(item<0.00001){
item=1.0/(2*j-1);
if(j%2==0){
sum-=item;
}else{
sum+=item;
}
j++;
}
System.out.println("最后一项绝对值小于1e-5的和值:
"+sum);
}
}
5、产生100个0-999之间的随机整数,然后判断这100个随机整数哪些是素数,哪些不是?
publicclassPrimeTest{
publicstaticvoidmain(String[]args){
PrimeTestt=newPrimeTest();
for(inti=0;i<100;i++){
intnum=(int)(Math.random()*1000);
if(t.isPrime(num)){
System.out.println(num+"是素数!
");
}else{
System.out.println(num+"不是素数!
");
}
System.out.println();
}
}
publicbooleanisPrime(intnum){
for(inti=2;i<=num/2;i++){
if(num%i==0){
System.out.println(num+"第一个被"+i+"整除!
");
returnfalse;
}
}
returntrue;
}
}
6、在屏幕上打印出n行的金字塔图案,如,若n=3,则图案如下:
*
***
*****
importjava.util.Scanner;
publicclassPrintStar{
publicstaticvoidmain(String[]args){
Scannersn=newScanner(System.in);
introws=sn.nextInt();
for(inti=1;i<=rows;i++){
for(intj=1;j<=rows-i;j++){
System.out.print("");
}
for(intk=1;k<=2*i-1;k++){
System.out.print("*");
}
System.out.println();
}
}
}
7、歌德巴赫猜想,任何一个大于六的偶数可以拆分成两个质数的和,打印出所有的可能。
如输入10,结果为:
10=5+5;10=3+7。
publicclassGede{
publicstaticvoidmain(String[]args){
intn=Integer.parseInt(args[0]);
if(n<=6||n%2!
=0){
System.out.println("错误的参数!
");
return;
}
Gedeg=newGede();
//因为1不是素数,n-2是偶数,所以从3开始循环
for(inti=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是否是素数
*/
publicbooleanisPrime(intnum){
for(inti=2;i<=num/2;i++){
if(num%i==0){
returnfalse;
}
}
returntrue;
}
}
四、实训题
万年历的设计与实现。
本程序包含两个类CalenderModelA和TestCalenderModelA。
CalenderModelA实现了赛事日期设置等主要功能,程序文件CalenderModelA.java。
publicclassCalenderModelA
{
//计算从公元始的天数
publicintgetNumberOfDay(intyear,intmonth,intday)
{
inttotal=0;
intlimit=getTotalDaysOfMonth(year,month);
if(day<=limit)
{
for(inty=1;y { total+=(this.isLeapYear(year)? 366: 365); } for(intm=1;m { total+=(this.getTotalDaysOfMonth(year,month)); } total+=day; returntotal; } else { System.out.println("您输入的日期非法"); return-1; } } //打印万年历 publicvoidshow(intyear,intmonth) { inttotal=0; //计算从公元始到今年之前的总天数 for(inty=1;y { total+=(this.isLeapYear(y)? 366: 365); } //计算今年到本月前的总天数 for(intm=1;m { total+=(this.getTotalDaysOfMonth(year,m)); } //计算本月1日是星期几 total=total%7; intd1=(total+1)%7; intd2=this.getTotalDaysOfMonth(year,month); System.out.println("\t\t\t"+year+"年"+month+"月"); System.out.println("--------------------------------------------------"); String[]s={"日","一","二","三","四","五","六"}; for(inti=0;i<7;i++){ System.out.print(s[i]+"\t"); } System.out.println(); for(inti=0;i System.out.print("\t"); } //打印本月日历 for(inti=d1,j=1;i System.out.print(j+"\t"); if((i+1)%7==0){ System.out.println(); } } System.out.println(); } //判断是否为闰年 publicbooleanisLeapYear(intyear) { return((year%4==0)&&(year%100! =0))||(year%400==0); } //计算某年某月天数 publicintgetTotalDaysOfMonth(intyear,intmonth) { inttotal=0; switch(month){ case1: case3: case5: case7: case8: case10: case12: total=31; break; case2: total=this.isLeapYear(year)? 29: 28; break; case4: case6: case9: case11: total=30; break; } returntotal; } } TestCalenderModelA实现main方法,具有输入大赛起始和终止日期,输出日历,并计算大赛周期的功能。 程序文件TestCalenderModelA.java。 importjava.util.Scanner; publicclassTestCalenderModelA { publicstaticvoidmain(String[]args) { Scannerscan=newScanner(System.in); System.out.print("请输入年份: "); intyear=scan.nextInt(); System.out.print("请输入月份: "); intmonth=scan.nextInt(); System.out.println("月历如下"); CalenderModelAtestBegin=newCalenderModelA(); testBegin.show(year,month); } } 第三章面向对象编程 一、选择题 1-5CABDD 2-10DCCBC 11-12CC 二、填空题 1.Packagemypackage ; 2.final 3.Object 4.packageimportclass 5.c 三、程序设计题 2、按下列要求编写程序: 1创建Teacher类 要求: Teacher类要描述姓名、年龄、薪水,类型分别为String、int、double 2创建TeacherTest类 要求: 在TeacherTest类中创建Teacher的对象;为该对象的属性(姓名、性别、年龄)赋值;将该对象的属性(姓名、性别、年龄)输出; 3为Teacher类添加一个方法,用于在教师原有薪水的基础上增加5000; 4修改TeacherTest类,增加对教师增加薪水方法的调用,并将增加后的薪水值输出。 Teacher.java: publicclassTeacher{ publicStringname; publicintage; publicdoublesalary; publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicintgetAge(){ returnage; } publicvoidsetAge(intage){ this.age=age; } publicdoublegetSalary(){ returnsalary; } publicvoidsetSalary(doublesalary){ this.salary=salary; } publicTeacher(){ } publicTeacher(Stringname,intage,doublesalary){ this.name=name; this.age=age; this.salary=salary; } publicvoidaddSalary(){ this.salary=this.salary+5000; } } TeacherTest.java: publicclassTeacherTest{ publicstaticvoidmain(String[]args){ Teacherteacher=newTeacher(); teacher.age=35; teacher.name="zhangsan"; teacher.salary=1234.5; System.out.println(teacher.age); System.out.println(teacher.name); System.out.println(teacher.salary); teacher.addSalary(); System.out.println(teacher.salary); } } 3、定义一个Person类。 1包含以下属性: Stringname;intage;booleangender;Personpartner。 2定义marry(Personp)方法,代表当前对象和p结婚,如若可以结婚,则输出恭贺信息,否则输出不能结婚原因。 下列情况不能结婚: 结婚年龄,男<24,女<22;3,某一方已婚。 3定义测试类,来测试以上程序。 publicclassPerson{ privateStringname; privateintage; privatebooleangender; Personpartner; publicPerson(Stringname,intage,booleangender,Personpartner){ this.name=name; this.age=age; this.gender=gender; this.partner=partner; } publicvoidmarry(Personp){ if(this.gender==p.gender){ System.out.println("同性不能结婚! "); return; } if((this.gender==true&&this.age<24)||(this.gender==false&&this.age<22) ||(p.gender==true&&p.age<24)||(p.gender==false&&p.age<22)){ System.out.println("没有达到结婚年龄! "); return; } if(this.partner! =null||p.partner! =null){ System.out.println("有一方已经结婚! "); return; } System.out.println(this.name+","+p.name+","+"祝你们新婚愉快! "); this.partner=p; p.partner=this; } publicstaticvoidmain(String[]args){ Personp1=newPerson("关之琳",23,false,null); Personp2=newPerson("刘德华",26,true,null); Personp3=newPerson("孙楠",70,true,null); p1.marry(p2); p1.marry(p3); } } 4、定义一个Animal类,该类有两个私有属性,name(代表动物的名字)和legs(代表动物的腿的条数)。 1两个构造方法,一个无参,默认给name赋值为AAA,给legs赋值为4;另一个需要两个参数,分别用这两个参数给私有属性赋值。 2两个重载的move()方法,其中一个无参,在屏幕上输出一行文字: XXXMoving! ! (XXX为该动物的名字);另一个需要一个int参数n,在屏幕上输出n次XXXMoving! ! publicclassAnimal1{ privateStringname; privateintlegs; publicAnimal1(){ this.name="AAA"; this.legs=4; } publicAnimal1(Stringname,intlegs){ super(); this.name=name; this.legs=legs; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicintgetLegs(){ returnlegs; } publicvoidsetLegs(intlegs){ this.legs=legs; } publicvoidmove(){ System.out.println("Animalmoving! "); } publicvoidmove(intn){ inti=1; while(i<=n){ System.out.println("Animalmoving! "); i++; } } } 5、定义一个Fish类,继承自Animal类。 1提供一个构造方法,该构造方法需要一个参数name,并给legs赋默认值0; 2覆盖Animal类中的无参move()方法,要求输出: XXXSwimming! ! publicclassFishextendsAnimal{ privateStringname; privateintlegs; publicFish(Stringname){ this.name=name; this.legs=0; } publicvoidmove(){ System.out.println("Fishisswimming! "); } } publicclassBirdextendsAnimal{ privateStringname; privateintlegs; publicBird(Stringname){ this.name=name; this.legs=2;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 核心技术 习题 答案