[Java程序设计教程(第三版)课后习题答案.doc

上传人:春哥&#****71; 文档编号:16940641 上传时间:2022-05-20 格式:DOC 页数:61 大小:218.50KB
返回 下载 相关 举报
[Java程序设计教程(第三版)课后习题答案.doc_第1页
第1页 / 共61页
[Java程序设计教程(第三版)课后习题答案.doc_第2页
第2页 / 共61页
点击查看更多>>
资源描述

《[Java程序设计教程(第三版)课后习题答案.doc》由会员分享,可在线阅读,更多相关《[Java程序设计教程(第三版)课后习题答案.doc(61页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Java程序设计教程(第三版)课后习题答案参考答案第1章1Java语言有哪些主要特点?平台独立性安全性多线程网络化面向对象2Java编程语言有哪四种不同的平台?Java 编程语言有四种平台:Java 标准版 (Java SE)、Java 企业版 (Java EE)、Java 微型版 (Java ME)和JavaFX。所有 Java 都由 Java 虚拟机 (VM) 和应用程序编程接口 (API) 组成。Java 虚拟机是一个用于特定硬件和软件平台的程序,它运行 Java 技术应用程序。API 是一组软件组件,可用于创建其他软件组件或应用程序。每个 Java 平台都提供了一个虚拟机和一个 API

2、,这使得为该平台编写的应用程序可以在具有 Java 编程语言所有优点的任何兼容系统上运行:平台独立性、功能强大、稳定性、易于开发和安全。Java SE当大多数人想到 Java 编程语言时,他们会想到 Java SE API。Java SE 的 API 提供了 Java 编程语言的核心功能。它定义了从 Java 编程语言的基本类型和对象到用于网络、安全、数据库访问、图形用户界面 (GUI) 开发和 XML 解析的高级类的所有内容。除了核心 API 之外,Java SE 平台还包括虚拟机、开发工具、部署技术以及 Java 技术应用程序中常用的其他类库和工具包。Java EEJava EE 平台构建

3、在 Java SE 平台之上。Java EE 平台为开发和运行大规模、多层、可扩展、可靠和安全的网络应用程序提供了 API 和运行时环境。Java MEJava ME 平台提供了一个 API 和一个小型虚拟机,用于在小型设备(如手机)上运行 Java 编程语言应用程序。该 API 是 Java SE API 的一个子集,以及对小型设备应用程序开发有用的特殊类库。Java ME 应用程序通常是 Java EE 平台服务的客户端。JavaFXJavaFX 是一个使用轻量级用户界面 API 创建富 Internet 应用程序的平台。JavaFX 应用程序使用硬件加速的图形和媒体引擎来利用更高性能的客

4、户端和现代外观以及用于连接到网络数据源的高级 API。JavaFX 应用程序可能是 Java EE 平台服务的客户端。3Java Application的开发步骤有哪些?Java Application的开发步骤:(1)下载JDK软件并安装;(2)配置相应的环境变量(path和classpath);(3)编写Java源程序(文本编辑器或集成开发环境IDE);(4)编译Java源程序,得到字节码文件(javac *.java);(5)执行字节码文件(java 字节码文件名)。4什么是环境变量?设置环境变量的主要目的是什么?环境变量的配置主要是为了进行“寻径”,即让程序能找到它需要的文件,所以设置

5、的内容就是一些路径。5不参考书本,试着编写一个简单的Java Application程序,实现在屏幕上输出“Welcome to Java”字符串,并对该程序进行编译和运行。public class Hello public static void main(String args)System.out.println(Welcome to Java);6编写一个Java Application程序,实现分行显示字符串“Welcome to Java”中的3个单词。public class Hello public static void main(String args)System.out

6、.println(Welcome );System.out.println(to );System.out.println(Java);第2章1Java语言对于合法标识符的规定是什么?指出以下哪些为合法标识符。a a2 3a *a _a $a int a%在Java中,标识符必须以字母、美元符号或者下划线打头,后接字母、数字、下划线或美元符号串。另外,Java语言对标识符的有效字符个数基本不做限定。合法的标识符: a a2 _a $a2变量的涵义是什么?变量名与变量值的关系?在程序执行过程中其值可以发生改变的量,称为变量,它本质上是内存分配的一小块存储空间。每个变量都必须有对应的名称来标识它,

7、即变量名,而变量空间所存放的数据则为变量值。3Java语言提供哪些基本的数据类型,为什么要提供这些不同的数据类型?布尔型:boolean整型:byte、short、int以及long浮点型(实型):float以及double字符型:char数据类型代表了数据的存储格式和处理方式,有了数据类型,程序就能够存储和处理整数、实数、字符以及布尔值等。4赋值语句的涵义是什么?数据传递。5数据类型强制转换的情形有哪些?如何转换?对于变窄转换,如long到short、double到float,或者其他不兼容转换:float到short、char到short等,必须进行强制类型转换。float f = (fl

8、oat)11.5; 或 float f = 11.5f;short b ; b = (short)f; 6每一条程序语句都以分号结束,该分号能否用中文输入模式下输入的分号?为何?不能。中英文输入模式下输入的分号是不同的,不但外观不同,其存储所需的空间也不同,Java编译器只能识别英文的分号,遇到中文分号会报错。7. float或double变量能否精确存储0.1这个小数?为什么? 不能。float和double不仅范围有限,精度也有限,有限的比特串不能精确表示0.1 这个重要的小数。换句话说,想精确表示0.1 这个小数,多少比特都不够用。同样,0.2、0.4和0.8等,也都不能被精确存储,其根

9、本原因是计算机采用的是二进制格式。第3章1假定乘坐飞机时,每位顾客可以免费托运20kg以内的行李,超过部分按每公斤收费1.2元,以下是相应的计算收费程序。该程序存在错误,请找出其中的错误。public class Test public static void main(String args) throws IOException float w,fee; /以下代码为通过控制台交互输入行李重量 InputStreamReader reader=new InputStreamReader(System.in); BufferedReader input=new BufferedReader(

10、reader); System.out.println(请输入旅客的行李重量:); String temp=input.readLine(); w = Float.parseFloat(temp); /字符串转换为单精度浮点型 fee = 0; if ( w 20); fee = (float)1.2 * (w-20); System.out.println(该旅客需交纳的托运费用:+fee+元); 缺少 import java.io.*; 语句2有一条阶梯,如果每步2阶,则最后剩1阶,如果每步3阶则剩2阶,每步5阶则剩4阶,每步6阶则剩5阶,每步7阶,则刚好走完。问这条阶梯最少有多少阶?找出

11、以下求解程序的错误所在。public class Testpublic static void main(String args) int i; while(i%2=1&i%3=2&i%5=4&i%6=5&i%7=0) i+; System.out.println(这条阶梯最少有:+i+阶);1)变量i应进行初始化。2)while循环的条件表达式应加上“非”,才符合逻辑。3试用单分支结构设计一个程序,判断用户输入的值X,当X大于零时求X值的平方根,否则不执行任何操作。import java.io.*;import java.lang.*;public class Testpublic stat

12、ic void main(String args) throws IOExceptionfloat x; InputStreamReader reader=new InputStreamReader(System.in); BufferedReader input=new BufferedReader(reader); System.out.println(请输入x:); String temp=input.readLine(); x = Float.parseFloat(temp); /字符串转换为单精度浮点型 if(x0) System.out.println(平方根值 +Math.sqr

13、t(x); 4从键盘读入两个字符,按照字母表的顺序进行排序,将前面的字符置于A=后面,排后面的字符置于B=后面,比如输入ok,应输出A=k B=o,请设计实现该程序。import java.io.*;public class Testpublic static void main(String args) throws IOException char A,B,c1,c2; c1 = (char)System.in.read(); c2 = (char)System.in.read(); if(c1c2) A=c2; B=c1; else A=c1; B=c2; System.out.prin

14、tln(A=+A+ B=+B); 5用穷举法求出3位数中百、十、个位数的立方和就是该数的数。public class Testpublic static void main(String args) int a,b,c,x=100; while(x1000) a=x%10; b=(x%100-a)/10; c=(x-x%100)/100; if(a*a*a+b*b*b+c*c*c=x) System.out.println(x); x+=1; 6编程实现打印以下图案:*public class Testpublic static void main(String args) int i,j,k

15、; / i控制行数, k控制*的个数,j控制空格数 for(i=1;i=6;i+) for(j=1;j=i-1;j+) System.out.print( ); /打印空格 for(k=1;k=13-i*2;k+) System.out.print(*); /打印*号 System.out.println(); /换行 7统计1至1万之间共有多少个素数。public class Test public static void main(String args) int i,j,count=0; label: for(i=1;i=10000;i+) /查找1到10000以内的素数 for(j=2

16、;ji;j+) /检验是否不满足素数条件 if (i%j=0) /不满足 continue label; /跳过后面不必要的检验 count+; /计数 System.out.println(个数:+count); 8打印输出斐波纳契数列的前12项。 斐波纳契数列的前12项如下: 第1项:0 第2项:1第3项:1第4项:2第5项:3第6项:5第7项:8第8项:13第9项:21第10项:34第11项:55第12项:89public class Test public static void main(String args) int i=0,j=1; for (int k=0;k6;k+) Sy

17、stem.out.print(i+ +j+ ); i=i+j; j=i+j; 9读程序,写结果。import java.io.*;public class Test public static void main(String args) throws IOException char sex= f; switch (sex) case m: System.out.println(男性); break; case f: System.out.println(女性); case u: System.out.println(未知); 女性未知10读程序,写结果。public class Testp

18、ublic static void main(String args) int i ,s=0; for(i=1;i=100;i+) if(i%3=0) continue; s+=i; System.out.println(s=+s);s=336711读程序,写结果。public class Testpublic static void main(String args) int i ,s=0; for(i=1;i100) break; System.out.println(s=+s);s=10512个位数是6,且能被3整除的5位数共有多少个?请设计并实现该程序。public class Tes

19、tpublic static void main(String args) int i=10006,count=0; while(i100000) if (i%3=0) count+; i+=10; System.out.println(符合条件的数共有+count+个); 运行结果:符合条件的数共有3000个13用嵌套循环结构,设计一个模拟电子钟的程序。提示:定义三个变量分别代表“小时”、“分”和“秒”,根据电子钟分、秒、小时之间的关系,采用三重循环来控制各量的增加,并由输出语句将变化中的三个量分别予以输出显示,即为一模拟数字电子钟。此外,Java语言提供的延时方法为Thread.sleep

20、(1000); 1000的单位为毫秒,即延时1秒。import java.util.*;public class Testpublic static void main(String args) throws InterruptedException int hour=0,min=0,sec=0; while(hour24) while(min60) while(sec60) sec+; Thread.sleep(1000); System.out.println(hour+时-+min+分-+sec+秒); sec=0; min+; min=0; hour+; 第4章1以下叙述中不正确的是_

21、。A、在方法中,通过return语句传回方法值B、在一个方法中,可以执行有多条return语句,并返回多个值C、在Java中,主方法main()后的一对圆括号中也可以带有参数D、在Java中,调用方法可以在System.out.println()语句中完成B2以下正确的描述是_。A、方法的定义不可以嵌套,但方法的调用可以嵌套B、方法的定义可以嵌套,但方法的调用不可以嵌套C、方法的定义和方法的调用均不可以嵌套D、方法的定义和方法的调用均可以嵌套A3以下正确的说法为_。A、在不同方法中不可以使用相同名字的变量B、实际参数可以在被调方法中直接使用C、在方法内定义的任何变量只在本方法范围内有效D、在方

22、法内的复合语句中定义的变量只在本方法语句范围内有效C4按Java语言的规定,以下正确的说法是_。A、实参不可以是常量,变量或表达式B、形参不可以是常量,变量或表达式C、实参与其对应的形参占用同一个存储单元D、形参是虚拟的,不占用存储单元D5一个Java Application程序中有且只有一个 方法,它是整个程序的执行入口。main()方法6方法通常可以认为由两部分组成,它们是 和 。方法头和方法体7读程序写结果。public class Test static void m(int x, int y, int z) x=111; y=222; z=333;public static void

23、 main(String args ) int x=100, y=200, z=300; m(x, y, z); System.out.println(x=+x+ y=+y+ z=+z);x=100 y=200 z=3008编写一个判断某个整数是否为素数的方法。 public boolean prime(int x) for(int j=2;jx;j+) /检验是否满足素数条件 if (x%j=0) /不满足 return false; return true; 9编写两个方法,分别求两个整数的最大公约数和最小公倍数,在主方法中由键盘输入两个整数并调用这两个方法,最后输出相应的结果。impor

24、t java.io.*;public class Test public static void main(String args) int a=0; System.out.print(请输入数a:); try BufferedReader br=new BufferedReader(new InputStreamReader(System.in); a=Integer.parseInt(br.readLine(); catch(IOException e) int b=0; System.out.print(请输入数b:); try BufferedReader br=new Buffere

25、dReader(new InputStreamReader(System.in); b=Integer.parseInt(br.readLine(); catch(IOException e) if(a=0|b=0) System.out.println(输入不合法!); System.out.println(最大公约数为:+Gys(a,b); System.out.println(最小公倍数为:+Gbs(a,b); public static int Gys(int a,int b) int r=0; if(ab) r=a; b=a; a=r; int i=1; while(i!=0) i=

26、a%b; a=b; b=i; return a; public static int Gbs(int a,int b) int ab=a*b; int r=0; if(ab) r=a; b=a; a=r; int i=1; while(i!=0) i=a%b; a=b; b=i; return ab/a; 10以下程序执行后的输出为 。public class Test static int m1(int a ,int b) int c; a+=a; b+=b; c=m2(a,b); return(c*c); static int m2( int a,int b) int c; c=a*b%3

27、; return( c ); public static void main(String args) int x=1,y=3,z; z= m1(x,y); System.out.println(z=+z); z=011编写一个方法,实现求某个整数的各个位上的数字之和的功能。import java.io.*;public class Test public static void main(String args) int i,a=0,s=0; System.out.print(请输入数a:); try BufferedReader br=new BufferedReader(new Inpu

28、tStreamReader(System.in); a=Integer.parseInt(br.readLine(); catch(IOException e) for( i=10;a%i!=a;i*=10) s+=(a%i)/(i/10); s+=a/(i/10); System.out.println(各位数之和为+s); 12编写程序实现十进制整数到八进制的转换。import java.io.*;public class Test public static void main(String args) int i,k,a=0,d,s=0; System.out.print(请输入数:)

29、; try BufferedReader br=new BufferedReader(new InputStreamReader(System.in); a=Integer.parseInt(br.readLine(); catch(IOException e) d=a%8; s+=d; k=10; for(i=64;a-d!=0;i*=8) s+=(a-d)%i*8/i*k; k*=10; d=a%i; System.out.println(八进制数为+s); 13用于指出数组中某个元素的数字被叫做 ;数组元素之所以相关,是因为它们具有相同的 和 。下标;数组名和数据类型。14数组int r

30、esults = new int6 所占存储空间是 字节。2415使用两个下标的数组被称为 数组,假定有如下语句: float scores = 1,2,3,4,5,6,7,8,9 ; 则scores.length的值为: , scores1.length的值为: , scores11的值为: 。二维;3;2;5。16从键盘上输入10个双精度浮点数,计算出这10个数的和以及它们的平均值。要求分别编写求和及求平均值的方法。import java.io.*;public class Test public static void main(String args)throws IOExceptio

31、n InputStreamReader reader=new InputStreamReader(System.in); BufferedReader input=new BufferedReader(reader); String temp; double x=new double10; for(int i=0;i10;i+) temp=input.readLine(); xi = Double.parseDouble(temp); S(x); Avg(x); public static void S(double x) /计算并输出和 double sum=0; for(int i=0;i

32、10;i+) sum+=xi; System.out.println(总和:+sum); public static void Avg(double x) /计算并输出平均数 double sum=0; for(int i=0;i10;i+) sum+=xi; System.out.println(平均数:+sum/10); 17利用数组输入6位大学生3门课程的成绩,然后计算(1)每个大学生的总分;(2)每门课程的平均分;import java.io.*;public class Scores public static void main(String args)throws IOExcep

33、tion int sum=0; /总分 int n=6; /学生数 String temp; InputStreamReader reader=new InputStreamReader(System.in); BufferedReader input=new BufferedReader(reader); int x=new int63; /录入成绩 for(int i=0;i6;i+) for (int j=0;j3 ;j+ ) System.out.print(i+1)+号同学+(j+1)+号课程分数); temp=input.readLine(); xij = Integer.pars

34、eInt(temp); /计算并输出每一位同学的总分 for(int i=0;in;i+) for (int j=0;j3 ;j+ ) sum+=xij; System.out.println(i+1)+号同学总分:+sum); sum=0; /计算并输出每一门课程的平均分 for(int i=0;i3;i+) for (int j=0;jn ;j+ ) sum+=xji; System.out.println(i+1)+号课程班级平均分:+sum*1.0/n); sum=0; 18编写一个方法,实现将字符数组倒序排列,即进行反序存放。import java.io.*;public class Test public static void main(String args)throws IOException char c = O,l,y,m,p,i,c, ,G,a,m,e,s; rever(c); System.out.println(c); public static void rever(char c) char t; for(int i=0,j=c.length-1;ij;i+,j-) t=ci; ci=

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁