Java第2版习题参考答案.docx
《Java第2版习题参考答案.docx》由会员分享,可在线阅读,更多相关《Java第2版习题参考答案.docx(68页珍藏版)》请在冰点文库上搜索。
Java第2版习题参考答案
习题参考答案
——Java程序设计实用教程(第2版)
第1章绪论
1.1
(1)简单性——Java对系统软、硬件要求低;也比较容易学习。
(2)面向对象——Java是纯面向对象的语言。
(3)分布性——Java是面向网络的语言;支持数据分布和操作分布。
(4)鲁棒性——说明Java的健壮性很好,不会轻易造成系统崩溃。
(5)安全性——在防止非法入侵方面表现突出。
(6)体系结构中立——可以在任意的处理器上运行,也可在不同的平台上运行。
(7)可移植性——采用Java虚拟机机制,体现Java最初的开发理念,可跨平台运行。
(8)解释型——Java解释器直接对Java字节码进行解释执行,在单机上运行时速度较慢。
(9)高性能——由于Java字节码的设计,使得它能很容易地直接转换成对应于特定CPU的机器码,从而得到较高的性能。
用Java编写的程序在网络上运行时,其运行速度快。
(10)多线程——在Java中内置了对多线程的支持,使用多线程机制提高了程序性能,可以充分利用CPU。
(11)动态性——Java自身的设计使得它更适合于不断发展的环境,在Java类库中可以自由地加入新的方法和实例变量,而不会影响用户应用程序的执行。
1.2Java在语法中取消了C/C++中具有的不安全的特性,如取消了指针,使得非法访问被杜绝。
用户不可能造成内存分配错误,也用不着专门提防可能出现的内存漏洞。
1.3主要是由于Java程序可以方便地被移植到网络上的不同机器。
另外,Java的类库中也实现了与不同平台的接口,使这些类库可以移植。
1.4对象是类的特例。
1.5略。
1.6略。
第2章绪论
2.1略。
2.2略。
2.3进行SETPATH设置是为了让系统找到Java.exe、Javac.exe在什么文件夹中;SETCLASSPATH设置的作用是查找类路径变量的。
2.4Java程序被分为两类,一类是JavaApplication程序,另一类是JavaApplet程序。
JavaApplication程序是完整的程序,程序中有main()方法是其显著标志,仅需要解释器来解释运行。
JavaApplet程序中没有main()方法,它不能独立运行,它是嵌入到HTML网页(Web页面)中的非独立程序,必须依靠Web浏览器内部包含的Java解释器来解释运行。
2.5第一步,使用某种编辑器编写程序源代码;第二步,将源程序编译为字节码文件,第三步,执行。
2.6请参考例2.1和例2.2。
2.7请参考例2.9。
2.8略。
第3章Java语言基础
3.1合法的变量名:
$UstatenewsAddMyNum_B2变量1addMyNumabc数int
非法的变量名:
A=bbyte3ABC'abc'3.1460xab43e1k*j
3.2⑴20⑵false⑶false⑷true⑸6⑹0
3.3a=2b=1
3.4y=2.0
将程序中的double改为float,其他不变是不行的。
因为,x=2.0后面没有F作为后缀,是默认为double型数据的。
3.5图案1源程序:
//第3章习题5图案1,程序名:
X03_051_菱形五星.java
publicclassX03_051_菱形五星{
publicstaticvoidmain(Stringargs[]){
intm,k,zx=20,Ceng=4;//Ceng是上三角的层数,zx是为了使图案居中的空格数
for(m=1;m<=10;m++)System.out.println("");
for(m=1;m<=Ceng;m++){
for(k=1;k<=zx-m;k++)System.out.print("");//引号中有2个空格
for(k=1;k<=2*m-1;k++)System.out.print("☆");
System.out.println("");
}
for(m=Ceng-1;m>=1;m--){
for(k=1;k<=zx-m;k++)System.out.print("");//引号中有2个空格
for(k=1;k<=2*m-1;k++)System.out.print("☆");
System.out.println("");
}
}
}
图案2源程序:
//第3章习题5图案2,程序名:
X03_052_倒三角五星.java
publicclassX03_052_倒三角五星{
publicstaticvoidmain(String[]args){
//Ceng是上三角的层数,zx是为了使图案居中的空格数
intm,k,zx=20,Ceng=4;
for(m=Ceng;m>=2;m--){
for(k=1;k<=zx-m;k++)
System.out.print("");//引号中有2个空格
for(k=1;k<=2*m-1;k++)
System.out.print("☆");
System.out.println("");
}
for(m=1;m<=Ceng;m++){
for(k=1;k<=zx-m;k++)
System.out.print("");//引号中有2个空格
for(k=1;k<=2*m-1;k++){
if(m>1&&mif(1==k||2*m-1==k)
System.out.print("☆");
else
System.out.print("");
}else
System.out.print("☆");
}
System.out.println("");
}
}
}
图案3源程序:
//第3章习题5图案3,程序名:
X03_053_倒实三角五星.java
publicclassX03_053_倒实三角五星{
publicstaticvoidmain(String[]args){
//Ceng是上三角的层数,zx是为了使图案居中的空格数
intm,k,zx=20,Ceng=4;
for(m=Ceng;m>=1;m--){
for(k=1;kSystem.out.print("");
for(k=1;k<=2*m-1;k++)
System.out.print("☆");
System.out.println("");
}
for(m=2;m<=Ceng;m++){
for(k=1;kSystem.out.print("");
for(k=1;k<=2*m-1;k++)
System.out.print("☆");
System.out.println("");
}
}
}
图案4源程序:
//第3章习题5图案4,程序名:
X03_054_倒空三角五星.java
publicclassX03_054_倒空三角五星{
publicstaticvoidmain(String[]args){
//Ceng是上三角的层数,zx是为了使图案居中的空格数
intm,k,zx=20,Ceng=4;
for(m=Ceng;m>=1;m--){
for(k=1;kSystem.out.print("");
for(k=1;k<=2*m-1;k++){
if(mif(k!
=1&&k!
=2*m-1)
System.out.print("");
else
System.out.print("☆");
else
System.out.print("☆");
}
System.out.println("");
}
for(m=2;m<=Ceng;m++){
for(k=1;kSystem.out.print("");
for(k=1;k<=2*m-1;k++){
if(mif(k!
=1&&k!
=2*m-1)
System.out.print("");
else
System.out.print("☆");
else
System.out.print("☆");
}
System.out.println("");
}
}
}
3.6
//第3章习题6,程序名:
X03_06_Sum.java
publicclassX03_06_Sum{
publicstaticvoidmain(String[]args){
intn;
longsum=0,fct=1;//请考虑为什么要将fct声明为long型数据
for(n=1;n<=20;n++){
fct*=n;
sum+=fct;
if(1==n)
System.out.print("sum="+n+"!
");
else
System.out.print("+"+n+"!
");
}
System.out.println("="+sum);
}
}
3.7
//第3章习题3.7,计算100(含100)以内的所有偶数的和、所有奇数的和。
//程序名:
X03_07_OuJiSum.java
publicclassX03_07_OuJiSum{
publicstaticvoidmain(String[]args){
intk,sumOu=0,sumJi=0;
for(k=1;k<=100;k++){
if(k%2!
=0){
sumJi+=k;
System.out.print("奇数:
"+k);
}
else{
sumOu+=k;
System.out.println("\t\t偶数:
"+k);
}
}
System.out.println("100以内所有奇数的和="+
sumJi+"\t\t所有偶数的和="+sumOu);
}
}
3.8
//第3章习题8,水仙花数,习题3.8。
程序名:
X03_08_ShuiXianHua.java
publicclassX03_08_ShuiXianHua{
publicstaticvoidmain(Stringargs[]){
intm,j,k,n;
m=j=k=0;
for(n=100;n<1000;n++){
m=n/100;//求出该数的百位上数字
j=n/10-m*10;//求出该数的十位上数字
k=n%10;//求出个位上数字
if(n==m*m*m+j*j*j+k*k*k)
System.out.println(n+"\t");
}
}
}
3.9
//第3章习题9,用while循环语句写程序求e的值,要求直到最后一项的值小于10-4。
//程序名:
X03_09_CalculateE.java
publicclassX03_09_CalculateE{
publicstaticvoidmain(String[]args){
intn=1;
finaldoubleE1=0.0001;
doublesumE=1.0,temp=1.0;
temp=1/fct(n);
while(temp>=E1){
sumE+=temp;
n++;
temp=1.0/fct(n);
}
System.out.println("n="+(n-1)+",sumE="+sumE);
}
staticlongfct(intn){//计算n!
longJieCheng=1;
for(intk=1;k<=n;k++){
JieCheng*=k;
}
returnJieCheng;
}
}
3.10
//第3章习题10,从公元1900年到2100年所有闰年的年号。
//程序名:
X03_10_LeapYear.java
publicclassX03_10_LeapYear{
publicstaticvoidmain(String[]args){
intk,n=0,year1=1900,year2=2100;
System.out.println("从公元"+year1+"年到"+year2+"年所有闰年的年号:
");
for(k=year1;k<=year2;k++){
if((k%4==0&&k%100!
=0)||k%400==0){
System.out.print(""+k+"\t");
n++;
if(n%5==0)System.out.println("");
}
}
}
}
第4章数组和字符串
4.1
//第4章习题1,程序名:
X04_01_Array.java
publicclassX04_01_Array{
publicstaticvoidmain(Stringargs[]){
intArr[][]={{999,888,777,666},
{11,22,33,44,55},
{1,2,3,4,5,6},
{8000,7000,6000},
};
for(inti=0;iSystem.out.println("\t\t\t\tArr["+i+"]"+":
");
for(intj=0;jSystem.out.print("Arr["+i+"]["+j+"]="+Arr[i][j]+"\t");
}
System.out.println();
}
}
}
4.2
//第4章习题2,程序名:
X04_02_HasError.java
classX04_02_HasError{
publicstaticvoidmain(Stringargs[]){
StringbArr[]={"I'mastudent.",
"You'reateacher.",
"They'remyfriends."
};
for(inti=0;iSystem.out.println(bArr[i]);
System.out.println(bArr[i].toLowerCase());//tolowerCase中的l改为大写
System.out.println(bArr[i].toUpperCase());//touowerCase中的u改为大写
}
}
}
4.3
//第4章习题3,程序名:
X04_03_StudentScore.java
importjavax.swing.JOptionPane;
publicclassX04_03_StudentScore{
publicstaticvoidmain(Stringargs[]){
intcount=6;
doublescore[]=newdouble[count];
StringstrArr[]={"数学","语文","英语","物理","化学","信息技术"};
Stringstr;
doubledoubleSum=0.0,doubleAver=0.0;//学生的总成绩和平均成绩
booleancontiGo=true;
for(intk=0;kwhile(contiGo){
str=JOptionPane.showInputDialog("请输入"+strArr[k]+"课程的成绩:
");
try{//处理输入非数值数据或输入的数是0
score[k]=Double.parseDouble(str);
if(0>score[k]||100JOptionPane.showMessageDialog(null,
"成绩不应该<0或大于100,请重新输入。
","提示信息",
JOptionPane.QUESTION_MESSAGE);
}else
break;
}catch(Exceptionne){
JOptionPane.showMessageDialog(null,
"输入的不是数据,不符合规定,请重新输入。
",
"提示信息",JOptionPane.QUESTION_MESSAGE);
}
}
doubleSum+=score[k];
}
doubleAver=Math.rint((doubleSum/count*100.0))/100.0;//平均成绩保留2位小数
JOptionPane.showMessageDialog(null,"这个同学的总成绩是:
"+doubleSum
+",平均成绩是:
"+doubleAver,"计算结果",
JOptionPane.INFORMATION_MESSAGE);
}
}
4.4
//第4章习题2,程序名:
X04_04_ArrayCoverse.java
publicclassX04_04_ArrayCoverse{
publicstaticvoidmain(String[]args){
intiArray[]={9,5,7,4,8},temp,count;
count=iArray.length;
System.out.println("数组原有数据:
");
for(intk=0;kSystem.out.print(iArray[k]+"\t");
}
System.out.println();
for(intk=0;ktemp=iArray[k];
iArray[k]=iArray[count-k-1];
iArray[count-k-1]=temp;
}
System.out.println("逆序重置后的数组数据:
");
for(intk=0;kSystem.out.print(iArray[k]+"\t");
}
System.out.println();
}
}
4.5
//第4章习题5,程序名:
X04_05_StringCat.java
publicclassX04_05_StringCat{
publicstaticvoidmain(String[]args){
StringstrArr[]={"Iam","astudent.","我是中国人。
"};
Stringstr="";
intcount=strArr.length;
for(intk=0;kstr=str.concat(strArr[k]);
}
System.out.println(str);
System.out.println("新形成的字符串第8个字符是:
"+str.charAt(7));
System.out.println("新形成的字符串第16个字符是:
"+str.charAt(15));
System.out.println("“中”在这个字符串中的位置是:
"+str.indexOf('中'));
System.out.println("“中国”在这个字符串中的位置是:
"+str.indexOf("中国"));
System.out.println("字符全部大写后:
"+str.toUpperCase());
}
}
4.6
//第4章习题6,程序名:
X04_06_CharCount.java
importjavax.swing.JOptionPane;
publicclassX04_06_CharCount{
publicstaticvoidmain(String[]args){
intcount=0,k=0,spaceV=0,charV=0,numberV=0;
Stringstr;
charcArr[];
str=JOptionPane.showInputDialog("请输入一个字符串:
");
cArr=str.toCharArray();
count=cArr.length;
for(k=0;kif(''==cArr[k])
spaceV++;//统计空格个数
elseif(cArr[k]>'@'&&cArr[k]<'['|cArr[k]>'\''&&cArr[k]<'{')
charV++;//统计字母A~Z和a~z的个数
elseif(cArr[k]>'/'&&cArr[k]<':
')
numberV++;//统计数字的个数
}
System.out.println("输入的字符串是:
"+str+",\t字符串长度是:
"+str.length());
Sy