1、Java简明教程课后习题参考答案参考答案第1章1Java语言有哪些主要特点。平台独立性安全性多线程网络化面向对象2目前美国Sun公司提供的适用不同开发规模的JDK有哪些。目前Sun共提供了三种不同的版本:微平台版J2ME(Java 2 Platform Micro Edition),标准版J2SE(Java 2 Platform Standard Edition)和企业版J2EE(Java 2 Platform Enterprise Edition),这三种版本分别适用于不同的开发规模和类型,对于普通Java开发人员和一般学习者来说,选用标准版J2SE就可以了,学会了J2SE,再学J2ME或J
2、2EE就比较容易上手,因为它们之间虽有所侧重,但相似之处很多,尤其是语言本身是一样的,都是Java。3Java Application的开发步骤有哪些。Java Application的开发步骤: (1)下载JDK软件并安装; (2)配置相应的环境变量(path和classpath); (3)编写Java源程序(文本编辑器或集成开发环境IDE); (4)编译Java源程序,得到字节码文件(javac *.java); (5)执行字节码文件(java 字节码文件名)。4什么是环境变量,设置环境变量的主要目的是什么。环境变量的配置主要是为了进行“寻径”,也即让程序能找到它需要的文件,所以设置的内容
3、就是一些路径。5不参考书本,试着编写一个简单的Java Application程序,实现在Dos窗口输出“Welcome to Nanjing City!”字符串。并对该程序进行编译和运行。 public class Hello public static void main(String args) System.out.println(Welcome to Nanjing City!); 6编写一个Java Application程序,实现分行显示字符串“Welcome to Nanjing City”中的四个单词。 public class Hello public static voi
4、d main(String args) System.out.println(Welcome ); System.out.println(to ); System.out.println(Nanjing );System.out.println(City!); 第2章1Java语言对于合法标识符的规定是什么?指出以下哪些为合法标识符。 a a2 3a *a _a $a int a%在Java语言中,标识符必须以字母、美元符号或者下划线打头,后接字母、数字、下划线或美元符号串。另外,Java语言对标识符的有效字符个数不做限定。合法的标识符:a a2 _a $a2变量的涵义是什么?变量名与变量值的
5、关系?在程序执行过程中其值可以改变的数据,称为变量,它本质上代表了内存中的一小块空间。每个变量都必须有对应的名称来标识它,即变量名,而变量空间所存放的数据则称为变量值。3Java语言提供哪些基本的数据类型,为什么要提供这些不同的数据类型?布尔型:boolean整型:byte、short、int以及long浮点型(实型):float以及double字符型:char数据类型代表了数据的存储格式和处理方式,虽然严格来说计算机只能识别“0”和“1”,但是,有了数据类型以后,计算机的识别能力就被人为扩展了,它能够识别整数、实数以及字符等。4赋值语句的涵义是什么? 数据传递。5数据类型强制转换的原则是什么
6、?如何转换? 对于变窄转换,如long到short、double到float,或者不兼容转换:float到short、char到short等,则需要进行强制转换。 float f = 11.5; short b ; b = (short)f; (强制转换)6每一条程序语句都应以分号来结束,这个分号能否用中文输入模式下输入的分号,为什么? 不能。首先中英文输入模式下输入的分号是不同的,不但外观不同,其存储所需的空间也是不同的,Java编译器只能识别英文的分号,对于中文分号,将会报错。第3章1假定乘坐飞机时,每位顾客可以免费托运20kg以内的行李,超过部分按每公斤收费1.2元,以下是相应的计算收费
7、程序。该程序存在错误,请找出。 public class Test public static void main(String args) throws IOException float w,fee; /以下代码为通过控制台交互输入行李重量 InputStreamReader reader=new InputStreamReader(System.in); BufferedReader input=new BufferedReader(reader); System.out.println(请输入旅客的行李重量:); String temp=input.readLine(); w = Fl
8、oat.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阶的最后才刚好走完,一阶不剩,问这条阶梯最少共有多少阶?找出以下求解程序的错误所在。public class Test public static void main(String args) i
9、nt 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 Test public static void main(String args) throws IOException float x; InputStrea
10、mReader 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.sqrt(x); 4从键盘读入两个字符,按照字母表排序顺序,将前面的字符置于A,排后面的字符置于B。请设计实现该程序。import
11、java.io.*;public class Test public 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.println(A=+A+ B=+B); 5用穷举法求出3位数中百、十、个位数的立方和就是该数的数。public class Test public static void main(S
12、tring 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 Test public static void main(String args) int i,j,k; / i控制行数, k控制*的个数,j控制空格数 for(i=1;i=6;i+) for(j=1;j=i-1;j+) System.out.print( ); /打印空格
13、 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;ji;j+) /检验是否不满足素数条件 if (i%j=0) /不满足 continue label; /跳过后面不必要的检验 count+; /计数 System.ou
14、t.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+) System.out.print(i+ +j+ ); i=i+j; j=i+j; 9读程序,写结果。import java.io.*;public clas
15、s 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 Test public static void main(String args) int i ,s=0; for(i=1;i=100;i+) if(i%3=0)
16、 continue; s+=i; System.out.println(s=+s); s=336711读程序,写结果。public class Test public 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 Test public static void main(String args) int i=10006,count=0; while(i100000) if (i%3=0
17、) count+; i+=10; System.out.println(符合条件的数共有+count+个); 13用嵌套循环结构,设计一模拟电子钟的程序。 提示:定义三个变量分别代表“小时”、“分”和“秒”,根据电子钟分、秒、小时之间的关系,采用三重循环来控制各量的增加,并由输出语句将变化中的三个量分别予以输出显示,即为一模拟数字电子钟。此外,Java语言提供的延时方法为Thread.sleep(1000);1000的单位为毫秒,即延时1秒。import java.util.*;public class Test public static void main(String args) thr
18、ows InterruptedException int hour=12,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以下叙述中不正确的是_。A、在方法中,通过return语句传回方法值B、在一个方法中,可以执行有多条return语句,并返回多个值C、在Java中,主方法main()后的一对圆括号中也可以带有参数D、在Java中,调用方法
19、可以在System.out.println()语句中完成 B2以下正确的描述是_。 A、方法的定义不可以嵌套,但方法的调用可以嵌套B、方法的定义可以嵌套,但方法的调用不可以嵌套C、方法的定义和方法的调用均不可以嵌套D、方法的定义和方法的调用均可以嵌套 A3以下正确的说法为_。 A、在不同方法中不可以使用相同名字的变量B、实际参数可以在被调方法中直接使用C、在方法内定义的任何变量只在本方法范围内有效D、在方法内的复合语句中定义的变量只在本方法语句范围内有效 C4按Java语言的规定,以下正确的说法是_。 A、实参不可以是常量,变量或表达式B、形参不可以是常量,变量或表达式C、实参与其对应的形参占
20、用同一个存储单元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 main(String args ) int x=100, y=200, z=300; m(x, y, z);System.out.println(“x=”+x+”y=”+y+”z=”
21、+z);x=100y=200z=3008编写一个判断某个整数是否为素数的方法。 public boolean prime(int x) for(int j=2;jx;j+) /检验是否满足素数条件 if (x%j=0) /不满足 return false; return true; 9编写两个方法,分别求两个整数的最大公约数和最小公倍数,在主方法中由键盘输入两个整数并调用这两个方法,最后输出相应的结果。import java.io.*;public class Test public static void main(String args) int a=0; System.out.print
22、(请输入数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 BufferedReader(new InputStreamReader(System.in); b=Integer.parseInt(br.readLine(); catch(IOExceptio
23、n 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=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;
24、 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; return( c ); public static void main(String args) int x=1,y=3,z; z= m1(x,y); System.out.p
25、rintln(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 InputStreamReader(System.in); a=Integer.parseInt(br.readLine(); catch(IOException e) for( i=10;a%i!
26、=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(请输入数:); try BufferedReader br=new BufferedReader(new InputStreamReader(System.in); a=Integer.parseInt
27、(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 results = 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
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1