java程序设计——基于JDK6和NetBeans实现第4章课后作业答案(共12页).doc
-
资源ID:14433570
资源大小:67KB
全文页数:12页
- 资源格式: DOC
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
java程序设计——基于JDK6和NetBeans实现第4章课后作业答案(共12页).doc
精选优质文档-倾情为你奉上第4章 Java面向对象高级特性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中的成员变量不能定义为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;i<t.length;i+) 08. System.out.println(ti);09. 10. 11. 3. 请完成下面程序,使得程序可以输出"hi"。01. public class 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,它包含学生的一些基本信息:姓名、学生类型、三门课程的成绩和成绩等级等。其次设计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. 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.type=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 abstract 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.getScores();12. for(int i=0;i<Student.COURSE_COUNT;i+)13. sum+=scoresi;14. 15. average=sum/Student.COURSE_COUNT;16. if(average>=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. 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<Student.COURSE_COUNT;i+)13. sum+=scoresi;14. 15. average=sum/Student.COURSE_COUNT;16. if(average>=90)17. return "优秀"18. else if(average>=80)19. return "良好"20. else if(average>=70)21. return "中等"22. else if(average>=60)23. return "及格"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;i<5;i+)06. for(int j=0;j<Student.COURSE_COUNT;j+)07. scoresij=(int)(Math.random()*61+40);08. 09. si=new Undergraduate("本科生"+(i+1),scoresi);10. si.setGrade(si.calculateGrade();11. 12. for(int i=5;i<10;i+)13. for(int j=0;j<Student.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;i<10;i+)21. System.out.print(si.getName()+"t");22. System.out.print(si.getType()+"t");23. c=si.getScores();24. for(int j=0;j<Student.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研究生836186中等研究生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 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(String 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.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 Undergraduate(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<Student.COURSE_COUNT;i+)13. sum+=scoresi;14. 15. average=sum/Student.COURSE_COUNT;16. if(average>=85)17. return Grade.DISTINCTION;18. else if(average>=75)19. return Grade.MERIT;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. 07. public Grade calculateGrade()08. int average;09. int sum=0;10. int scores;11. scores=this.getScores();12. for(int i=0;i<Student.COURSE_COUNT;i+)13. sum+=scoresi;14. 15. average=sum/Student.COURSE_COUNT;16. if(average>=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. 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;i<5;i+)06. for(int j=0;j<Student.COURSE_COUNT;j+)07. scoresij=(int)(Math.random()*61+40);08. 09. si=new Undergraduate("本科生"+(i+1),scoresi);10. si.setGrade(si.calculateGrade();11. 12. for(int i=5;i<10;i+)13. for(int j=0;j<Student.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;i<10;i+)21. System.out.print(si.getName()+"t");22. System.out.print(si.getType()+"t");23. c=si.getScores();24. for(int j=0;j<Student.COURSE_COUNT;j+)25. System.out.print(cj+"t");26. 27. System.out.println(si.getGrade().getScoreGrade();28. 29. 30. 6. 应用抽象类和接口编写程序,根据第4题的要求输出本科生及研究生的成绩等级。要求:首先设计一个接口,接口中包含用于计算学生成绩等级的抽象方法,设计两个类分别实现上述接口,这两个类分别表示本科生及研究生的成绩等级标准。其次设计抽象类Student及其两个子类本科生类Undergraduate和研究生类Postgraduate,两个子类分别设置各自的成绩等级计算标准。最后创建测试类进行测试。/定义接口01. public interface GradeCalculate 02. public String getGrade(int scores);03. /本科生成绩等级计算标准01. public class UnderGradeCalculate implements GradeCalculate 02. public String getGrade(int scores)03. int average;04. int sum=0;05. for(int i=0;i<Student.COURSE_COUNT;i+)06. sum+=scoresi;07. 08. average=sum/Student.COURSE_COUNT;09. if(average>=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 02. public String getGrade(int scores)03. int average;04. int sum=0;05. for(int i=0;i<Student.COURSE_COUNT;i+)06. sum+=scoresi;07. 08. average=sum/Student.COURSE_COUNT;09. if(average>=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 COURSE_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 name;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 String 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(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.setGrade(this.getCriterion().getGrade(scores);08. 09. /测试类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;i<5;i+)06. for(int j=0;j<Student.COURSE_COUNT;j+)07. scoresij=(int)(Math.random()*61+40);08. 09. si=new Undergraduate("本科生"+(i+1),scoresi);10. 11. for(int i=5;i<10;i+)12. for(int j=0;j<Student.COURSE_COUNT;j+)13. scoresij=(int)(Math.random()*61+40);14. 15. si=new Postgraduate("研究生"+(i-4),scoresi);16. 17. int c;18. for(int i=0;i<10;i+)19. System.out.print(si.getName()+"t");20. System.out.print(si.getType()+"t");21. c=si.getScores();22. for(int j=0;j<Student.COURSE_COUNT;j+)23. System.out.print(cj+"t");24. 25. System.out.println(si.getGrade();26. 27. 28. 专心-专注-专业