Java面向对象程序设计课后答案
Java面向对象程序设计 清华大学出版社
(编著 耿祥义 张跃平) 习题解答
建议使用文档结构图
(选择Word菜单→视图→文档结构图) 习题1
1.James Gosling 、、、、 2.
(1)使用一个文本编辑器编写源文件。
(2)使用Java编译器(javac.exe)编译Java源程序,得到字节码文件。 (3)使用Java解释器(java.exe)运行Java程序
3.Java的源文件是由若干个书写形式互相独立的类组成的。 应用程序中可以没有public类,若有的话至多可以有一个public类。 4.系统环境path D\\jdk\\bin;
系统环境classpath D\\jdk\\jre\\lib\\rt.jar;.; 5. B
6. Java源文件的扩展名是.java。Java字节码的扩展名是.class。 7. D
8.(1)Speak.java
(2)生成两个字节码文件,这些字节码文件的名字Speak.class 和 Xiti8.class (3)java Xiti8
(4)执行java Speak的错误提示
Exception in thread "main" java.lang.NoSuchMethodError: main 执行java xiti8得到的错误提示
Exception in thread "main" java.lang.NoClassDefFoundError: xiti8 (wrong name: Xiti8) 执行java Xiti8.class得到的错误提示
Exception in thread "main" java.lang.NoClassDefFoundError: Xiti8/class 执行java Xiti8得到的输出结果 I'm glad to meet you 9.属于操作题,解答略。 习题2 1. D
2.【代码1】 【代码2】 错误 //【代码3】更正为 float z=6.89F; 3.float型常量后面必须要有后缀“f”或“F”。
对于double常量,后面可以有后缀“d”或“D”,但允许省略该后缀。 4.public class Xiti4{
public static void main (String args[ ]){
char ch1='你',ch2='我',ch3='他';
System.out.println("\\""+ch1+"\\"的位置:"+(int)ch1); System.out.println("\\""+ch2+"\\"的位置:"+(int)ch2); System.out.println("\\""+ch3+"\\"的位置:"+(int)ch3); } }
5.数组名字.length 6.数组名字.length 7. 【代码1】A,65 【代码2】-127
【代码3】 123456.783,123456.78312 8.
【代码1】false 【代码2】true 【代码3】false 【代码4】3 【代码5】4.4 【代码6】8.8 习题3 输出110
if-else语句书写的不够规范,复合语句缺少大括号“{}”,代码不够清晰。 2.你好好酷!! 3.
public class Xiti3_3 {
public static void main (String args[ ]){ int startPosition=0,endPosition=0;
char cStart='а',cEnd='я';
startPosition=(int)cStart; //cStart做int型转换据运算,并将结果赋值给startPosition endPosition=(int)cEnd ; //cEnd做int型转换运算,并将结果赋值给endPosition System.out.println("俄文字母表:"); for(int i=startPosition;i<=endPosition;i++){ char c='\\0';
c=(char)i; //i做char型转换运算,并将结果赋值给c System.out.print(" "+c); if((i-startPosition+1)==0) System.out.println(""); } } }
4.
public class Xiti4
{ public static void main(String args[]) { double sum=0,a=1; int i=1; while(i<=20) { sum=sum+a; i++; a=a*i; }
System.out.println("sum="+sum); } } 5. class Xiti5
{ public static void main(String args[]) { int i,j;
for(j=2;j<=100;j++) { for(i=2;i<=j/2;i++) { if(j%i==0) break; } if(i>j/2)
{ System.out.print(" "+j); } } } } 6. class Xiti6
{ public static void main(String args[]) { double sum=0,a=1,i=1; while(i<=20) { sum=sum+a; i++; a=(1.0/i)*a; }
System.out.println("使用while循环计算的sum="+sum);
for(sum=0,i=1,a=1;i<=20;i++) { a=a*(1.0/i); sum=sum+a; }
System.out.println("使用for循环计算的sum="+sum);
} } 7.
public class Xiti7
{ public static void main(String args[]) { int sum=0,i,j; for(i=1;i<=1000;i++) { for(j=1,sum=0;j<i;j++) { if(i%j==0) sum=sum+j; } if(sum==i)
System.out.println("完数:"+i); } } }
8.方法之一
import java.util.Scanner; public class Xiti8
{ public static void main (String args[ ]){
System.out.println("请输入两个非零正整数,每输入一个数回车确认"); Scanner reader=new Scanner(System.in); int m=0,n=0,temp=0,gy=0,gb=0,a,b; a=m = reader.nextInt(); b=n = reader.nextInt(); if(m<n) { temp=m; m=n; n=temp; }
int r=m%n; while(r!=0) { n=m; m=r; r=m%n; } gy=n; gb=a*b/gy;
System.out.println("最大公约数 :"+gy); System.out.println("最小公倍数 :"+gb); } }
8.方法之二
import java.util.Scanner;
public class Xiti8 {
public static void main (String args[ ]){
System.out.println("请输入两个非零正整数,每输入一个数回车确认"); Scanner reader=new Scanner(System.in); int m=0,n=0,t=0,gy=0,gb=0; m = reader.nextInt(); n = reader.nextInt(); if(m>n){ t=m; m=n; n=t; }
for(int i=1;i<=m;i++){
if(m%i==0 && n%i==0){ gy=i; } }
gb=m*n/gy;
System.out.println(m+","+n+"的最大公约数为 "+gy); System.out.println(m+","+n+"的最小公倍数为 "+gb); } } 9.
public class Xiti9
{ public static void main(String args[]) { int n=1; long sum=0,t=1; t=n*t; while(true) { sum=sum+t; if(sum>9999) break; n++; t=n*t; }
System.out.println("
满足条件的最大整数:"+(n-1)); }
}// 1至7的阶乘和是sum=5913.0 // 1至8的阶乘和是sum=46233.0