1、java程序设计基于JDK6和NetBeans实现课后答案第一章课后作业答案 1. 试说明Java Application与Java Applet的不同之处。答案:Java的用户程序分为两类:Java Application和Java Applet,这两类程序在组成结构和执行机制上都有一定的差异,主要体现在以下几方面:(1)运行方式不同。Java Application是完整的程序,可以独立运行;Java Applet程序不能单独运行,它必须嵌入到用HTML语言编写的Web页面中,通过与Java兼容的浏览器来控制执行。(2)运行工具不同。Java Application程序被编译以后,用普通的
2、Java解释器就可以使其边解释边执行;而Java Applet必须通过网络浏览器或者Applet观察器才能执行。(3)程序结构不同。每个Java Application程序必定含有一个并且只有一个main()方法,程序执行时,首先寻找main()方法,并以此为入口点开始运行;而Applet程序则没有含main()方法的主类,这也正是Applet程序不能独立运行的原因。尽管Applet没有含有main()方法的主类,但Applet一定有一个从java.applet.Applet派生的类,它是由Java系统提供的。(4)受到的限制不同。Java Application程序可以设计成能进行各种操作的
3、程序,包括读/写文件的操作,但是Java Applet对站点的磁盘文件既不能进行读操作,也不能进行写操作。然后,由于Applet的引入,使Web页面具有动态多媒体效果和可互交性能,这使由名为超文本、实为纯文本的HTML语言编写成的Web页面真正具有了超文本功能,不但可以显示文本信息,而且还可以有各种图片效果和动态图形效果,从而使页面显得生动美丽;另外,Applet使Web页面增加了按钮等功能,从而增加了交互性。2. Java程序的最小程序单位是什么?答案:Java语言以类作为程序的基本单位。3. 下载并安装JDK 1.6以及Java API文档,编译并运行例1-1。答案:实践题。4. 编写一个
4、Java应用程序,在屏幕上输出“欢迎进入Java奇妙世界!”的字符串。答案:public class HelloWorld public static void main(String args) System.out.println(欢迎进入Java奇妙世界!); 5. 下面程序的功能是:计算并打印输出两个整数a和b之间的最大值,请填空。01 public class Max02 public static void main (String args ) 03 int max;04 int a=3;05 int b=5;06 if(ab)07 max=a ;08 09 else10 max
5、=b ;11 12 System.out.println(max);13 14 【运行结果】 5第2章 Java语言基础1请完成下面程序,使得程序的输出结果如右图所示。* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *01. public class LoopControl 02. public static void main(String args) 03. outer: for (int i = 0; i 10; i+)
6、04. for (int j = 0; j i) 06. System.out.println() ;07. continue outer ;08. 09. System.out.print( * );10. 11. 12. 13. 2编写程序,输出英文字母AZ及其对应的Unicode编码值。01. public class CharUnicodeTest 02. public static void main(String args) 03. for(char c=A;c=Z;c+)04. System.out.print(Character: +c);05. System.out.prin
7、tln(t+Unicode: +(int)c);06. 07. 08. 3编写程序,计算1!+2!+3!+20!的和。01. public class NestedLoopTest 02. public static void main(String args) 03. long sum=0;04. long fac;05. for(int i=1;i21;i+)06. fac=1;07. for(int j=1;j=i;j+)08. fac=fac*j;09. 10. sum=sum+fac;11. 12. System.out.println(1!+2!+.+20!=+sum);13. 1
8、4. 4编写程序,随机产生一个(50,100)之间的整数并判断其是否为素数。01. public class RandomPrimeTest 02. public static void main(String args) 03. int i=(int)(Math.random()*49+51);04. System.out.println(The random number is : +i);05. int j;06. for(j=2;ji;j+)07. if(i%j=0) break;08. 09. if(j=i)10. System.out.println(i+ is a prime n
9、umber);11. else12. System.out.println(i+ is not a prime number);13. 14. 5编写程序,输出从1到9的乘法口诀表。01. public class MultiTableTest 02. public static void main(String args) 03. for(int i=1;i=9;i+)04. for(int j=1;j=i;j+)05. System.out.print(i+*+j+=+i*j+t);06. 07. System.out.println();08. 09. 10. 第4章 Java面向对象高
10、级特性1. 指出下面程序中出现编译错误的行数及其原因。01. public class Outer 02. private class Inner 03. static String name=new String(Inner);04. public void method()05. System.out.println(name);06. 07. 08. public static void main(String args) 09. Inner a=new Outer().new Inner();10. a.method();11. 12. 上述代码中第3行会出现编译错误,内部类Inner
11、中的成员变量不能定义为static。2. 请完成下面程序,使得程序可以输出枚举常量值:RED、GREEN和BLUE。01. public class Ball 02. public enum T 03. RED, GREEN, BLUE 04. 05. public static void main(String args) 06. Ball.T t=Ball.T.values();07. for(int i=0;it.length;i+) 08. System.out.println(ti);09. 10. 11. 3. 请完成下面程序,使得程序可以输出hi。01. public class
12、 Car 02. private class Engine 03. Engine() 04. drive(); 05. 06. 07. public static void main(String args) 08. new Car().go();09. 10. void go() 11. new Engine();12. 13. void drive() 14. System.out.println(hi);15. 16. 4. 应用抽象类及继承编写程序,输出本科生及研究生的成绩等级。要求:首先设计抽象类Student,它包含学生的一些基本信息:姓名、学生类型、三门课程的成绩和成绩等级等。其
13、次设计Student类的两个子类:本科生类Undergraduate和研究生类Postgraduate,二者在计算成绩等级时有所区别,具体计算标准如表所示。最后创建测试类进行测试。学生成绩等级本科生标准研究生标准平均分85-100:优秀平均分90-100:优秀平均分75-85: 良好平均分80-90: 良好平均分65-75: 中等平均分70-80: 中等平均分60-65: 及格平均分60-70: 及格平均分60以下:不及格平均分60以下:不及格/抽象类Student01. abstract class Student 02. final static int COURSE_COUNT=3;03
14、. private String name;04. private String type;05. private int scores;06. private String grade;07. public Student(String name)08. this.name=name;09. 10. public void setName(String name)11. this.name=name;12. 13. public String getName()14. return name;15. 16. public void setType(String type)17. this.t
15、ype=type;18. 19. public String getType()20. return type;21. 22. public void setScores(int scores)23. this.scores=scores;24. 25. public int getScores()26. return scores;27. 28. public void setGrade(String grade)29. this.grade=grade;30. 31. public String getGrade()32. return grade;33. 34. public abstr
16、act String calculateGrade();35. /本科生类01. public class Undergraduate extends Student02. public Undergraduate(String name,int scores)03. super(name);04. this.setType(本科生);05. this.setScores(scores);06. 07. public String calculateGrade()08. int average;09. int sum=0;10. int scores;11. scores=this.getSc
17、ores();12. for(int i=0;i=85)17. return 优秀;18. else if(average=75)19. return 良好;20. else if(average=65)21. return 中等;22. else if(average=60)23. return 及格;24. else25. return 不及格;26. 27. /研究生类01. public class Postgraduate extends Student02. public Postgraduate(String name,int scores)03. super(name);04.
18、 this.setType(研究生);05. this.setScores(scores);06. 07. public String calculateGrade()08. int average;09. int sum=0;10. int scores;11. scores=this.getScores();12. for(int i=0;i=90)17. return 优秀;18. else if(average=80)19. return 良好;20. else if(average=70)21. return 中等;22. else if(average=60)23. return
19、及格;24. else25. return 不及格;26. 27. /测试类01. public class StudentTest 02. public static void main(String args)03. Student s=new Student10;04. int scores=new int10Student.COURSE_COUNT;05. for(int i=0;i5;i+)06. for(int j=0;jStudent.COURSE_COUNT;j+)07. scoresij=(int)(Math.random()*61+40);08. 09. si=new Un
20、dergraduate(本科生+(i+1),scoresi);10. si.setGrade(si.calculateGrade();11. 12. for(int i=5;i10;i+)13. for(int j=0;jStudent.COURSE_COUNT;j+)14. scoresij=(int)(Math.random()*61+40);15. 16. si=new Postgraduate(研究生+(i-4),scoresi);17. si.setGrade(si.calculateGrade();18. 19. int c;20. for(int i=0;i10;i+)21. S
21、ystem.out.print(si.getName()+t);22. System.out.print(si.getType()+t);23. c=si.getScores();24. for(int j=0;jStudent.COURSE_COUNT;j+)25. System.out.print(cj+t);26. 27. System.out.println(si.getGrade();28. 29. 30. 运行结果:本科生1本科生939068良好本科生2本科生768958中等本科生3本科生796690良好本科生4本科生958598优秀本科生5本科生547853及格研究生1研究生83
22、6186中等研究生2研究生915785中等研究生3研究生709655中等研究生4研究生437562及格研究生5研究生438061及格5. 应用枚举类编写程序,根据第4题的要求输出本科生及研究生的成绩等级。要求:将学生成绩等级定义成枚举类,其它功能不变,完成类的定义并进行测试。/抽象类01. abstract class Student 02. /枚举类定义03. static enum Grade 04. DISTINCTION(优秀), 05. MERIT(良好), 06. AVERAGE(中等), 07. PASS(及格), 08. FAIL(不及格);09. private String
23、 scoreGrade;10. Grade(String scoreGrade) 11. this.scoreGrade = scoreGrade;12. 13. public String getScoreGrade() 14. return scoreGrade;15. 16. 17. final static int COURSE_COUNT = 3;18. private String name;19. private String type;20. private int scores;21. private Grade sgrade;22. public Student(Strin
24、g name) 23. this.name = name;24. 25. public void setName(String name) 26. this.name = name;27. 28. public String getName() 29. return name;30. 31. public void setType(String type) 32. this.type = type;33. 34. public String getType() 35. return type;36. 37. public void setScores(int scores) 38. this.
25、scores = scores;39. 40. public int getScores() 41. return scores;42. 43. public void setGrade(Grade sgrade) 44. this.sgrade = sgrade;45. 46. public Grade getGrade() 47. return sgrade;48. 49. public abstract Grade calculateGrade();50. /本科生类01. public class Undergraduate extends Student02. public Unde
26、rgraduate(String name,int scores)03. super(name);04. this.setType(本科生);05. this.setScores(scores);06. 07. public Grade calculateGrade()08. int average;09. int sum=0;10. int scores;11. scores=this.getScores();12. for(int i=0;i=85)17. return Grade.DISTINCTION;18. else if(average=75)19. return Grade.ME
27、RIT;20. else if(average=65)21. return Grade.AVERAGE;22. else if(average=60)23. return Grade.PASS;24. else25. return Grade.FAIL;26. 27. /研究生类01. public class Postgraduate extends Student02. public Postgraduate(String name,int scores)03. super(name);04. this.setType(研究生);05. this.setScores(scores);06.
28、 07. public Grade calculateGrade()08. int average;09. int sum=0;10. int scores;11. scores=this.getScores();12. for(int i=0;i=90)17. return Grade.DISTINCTION;18. else if(average=80)19. return Grade.MERIT;20. else if(average=70)21. return Grade.AVERAGE;22. else if(average=60)23. return Grade.PASS;24.
29、else25. return Grade.FAIL;26. 27. /测试类01. public class StudentTest 02. public static void main(String args)03. Student s=new Student10;04. int scores=new int10Student.COURSE_COUNT;05. for(int i=0;i5;i+)06. for(int j=0;jStudent.COURSE_COUNT;j+)07. scoresij=(int)(Math.random()*61+40);08. 09. si=new Un
30、dergraduate(本科生+(i+1),scoresi);10. si.setGrade(si.calculateGrade();11. 12. for(int i=5;i10;i+)13. for(int j=0;jStudent.COURSE_COUNT;j+)14. scoresij=(int)(Math.random()*61+40);15. 16. si=new Postgraduate(研究生+(i-4),scoresi);17. si.setGrade(si.calculateGrade();18. 19. int c;20. for(int i=0;i10;i+)21. S
31、ystem.out.print(si.getName()+t);22. System.out.print(si.getType()+t);23. c=si.getScores();24. for(int j=0;jStudent.COURSE_COUNT;j+)25. System.out.print(cj+t);26. 27. System.out.println(si.getGrade().getScoreGrade();28. 29. 30. 6. 应用抽象类和接口编写程序,根据第4题的要求输出本科生及研究生的成绩等级。要求:首先设计一个接口,接口中包含用于计算学生成绩等级的抽象方法,设
32、计两个类分别实现上述接口,这两个类分别表示本科生及研究生的成绩等级标准。其次设计抽象类Student及其两个子类本科生类Undergraduate和研究生类Postgraduate,两个子类分别设置各自的成绩等级计算标准。最后创建测试类进行测试。/定义接口01. public interface GradeCalculate 02. public String getGrade(int scores);03. /本科生成绩等级计算标准01. public class UnderGradeCalculate implements GradeCalculate 02. public String
33、getGrade(int scores)03. int average;04. int sum=0;05. for(int i=0;i=85)10. return 优秀;11. else if(average=75)12. return 良好;13. else if(average=65)14. return 中等;15. else if(average=60)16. return 及格;17. else18. return 不及格;19. 20. /研究生成绩等级计算标准01. public class PostGradeCalculate implements GradeCalculate
34、 02. public String getGrade(int scores)03. int average;04. int sum=0;05. for(int i=0;i=90)10. return 优秀;11. else if(average=80)12. return 良好;13. else if(average=70)14. return 中等;15. else if(average=60)16. return 及格;17. else18. return 不及格;19. 20. /抽象类01. abstract class Student 02. final static int CO
35、URSE_COUNT=3;03. private String name;04. private String type;05. private int scores;06. private String grade;07. private GradeCalculate criterion;08. public Student(String name)09. this.name=name;10. 11. public void setName(String name)12. this.name=name;13. 14. public String getName()15. return nam
36、e;16. 17. public void setType(String type)18. this.type=type;19. 20. public String getType()21. return type;22. 23. public void setScores(int scores)24. this.scores=scores;25. 26. public int getScores()27. return scores;28. 29. public void setGrade(String grade)30. this.grade=grade;31. 32. public St
37、ring getGrade()33. return grade;34. 35. public void setCriterion(GradeCalculate criterion)36. this.criterion=criterion;37. 38. public GradeCalculate getCriterion()39. return criterion;40. 41. /本科生类01. public class Undergraduate extends Student02. public Undergraduate(String name,int scores)03. super
38、(name);04. this.setType(本科生);05. this.setScores(scores);06. this.setCriterion(new UnderGradeCalculate();07. this.setGrade(this.getCriterion().getGrade(scores);08. 09. /研究生类01. public class Postgraduate extends Student02. public Postgraduate(String name,int scores)03. super(name);04. this.setType(研究生);05. this.setScores(scores);06. this.setCriterion(new PostGradeCalculate();07. this.se