第二次过程性考核
第二次过程性考核——面向对象程序设计
--------------------------------------------------------------------------------------------------------------------------------------------------
码云仓库地址:https://gitee.com/smr_777/16012021__shen_mengran
更多程序代码(课堂练习二)详见码云:https://gitee.com/smr_777/learn/tree/master
--------------------------------------------------------------------------------------------------------------------------------------------------
7-1 学生类-构造函数
定义一个有关学生的Student类,内含类成员变量: String name、String sex、int age,所有的变量必须为私有(private)。
1.编写有参构造函数:能对name,sex,age赋值。
2.覆盖toString函数: 按照格式:类名 [name=, sex=, age=]输出。使用idea自动生成,然后在修改成该输出格式。
3.对每个属性生成setter/getter方法。
4.main方法中:输入1行name age sex , 调用上面的有参构造函数新建对象。
输入样例:
tom 15 male
输出样例:
Student [name='tom', sex='male', age=15]
代码如下:
import java.util.Scanner; class Student { //定义学生类 private String name; private String sex; //私有成员变量 private int age; public Student() { //有参构造函数 this.name = "tom"; this.sex = "male"; this.age = 15; } public void toString(String n, int a, String s) { //定义toString方法 this.name = n; this.sex = s; this.age = a; System.out.println("Student [name='" + this.name + "', sex='" + this.sex + "', age=" + this.age + "]"); } } public class SC { //主函数 public static void main(String[] args) { Scanner reader = new Scanner(System.in); String n = reader.next(); int a = reader.nextInt(); String s = reader.next(); Student smr = new Student(); //创建对象smr smr.toString(n, a, s); reader.close(); } }
程序设计思路
看到题首先定义Student类,并在类中添加成员变量。再定义Student的构造方法,并为其成员变量赋值。定义一个toString方法按照格式输出类名 [name=, sex=, age=],然后使用idea自动生成修改成该输出格式。最后创建主类Main函数,对新建的对象调用以上的方法。
运用知识点
创建类和对象、构造方法、setter/getter方法
感想
这是我考试中最后一道做的题,由于考试前老师带领我们做了父类子类构造方法等的综合练习。看到这道题时想的是按照题目顺序依次定义类,添加变量赋值,定义toString方法时卡住了,后面的按格式输出以及使用idea不知道怎么做,在主类Main 中做的也比较混乱。所以考试没有做上,考完发现班级有几名同学做上了我就在想他们可真厉害。其实他们厉害一定是有原因的,对于Java程序设计这门课来说,我们大多数都是课上听课,其次学习的时间就是每周写博客的时候学习,考试的时候发现只要是有思路做的都非常的快,还是应该多多在课下学习。
运行结果
--------------------------------------------------------------------------------------------------------------------------------------------------
7-2 定义类
请补充以下代码,完成输出要求。(注意:需要提交完整代码)
输入格式:在一行中给出5个不超过1000的正整数。
输出格式:输出5个整数的平均值,保留小数点后两位。
输入样例:
1 2 3 4 5
输出样例:
3.00
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int a,b,c,d,e; a = in.nextInt(); b = in.nextInt(); c = in.nextInt(); d = in.nextInt(); e = in.nextInt(); RR rr = new RR(); double dd = rr.fun(a,b,c,d,e); System.out.printf("%.2f",dd); } } class RR{ }
补全代码如下:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int a,b,c,d,e; a = in.nextInt(); b = in.nextInt(); c = in.nextInt(); d = in.nextInt(); e = in.nextInt(); RR rr = new RR(); double dd = rr.fun(a,b,c,d,e); System.out.printf("%.2f",dd); } } class RR{ public int fun(int a,int b,int c,int d,int e){ //主类Main中调用RR类,RR类实现五个整数平均值 return (a+b+c+d+e)/5; } }
程序设计思路
看到主类有为RR类中的对象rr分配新的空间我就想到了RR类是实现求平均值的。题中创建RR类其中就想到要在类中补全五个整型数,并且需要将五个数求和算平均值返回到主类中。
运用知识点
主类调用、类中参数传值
感想
考试中第二道做了这个题首先观察到主类中RR和fun,想的平均值应该在RR类中并需要返回到主类,考试时这道题思路还算清晰完成速度挺快,对于传值记忆深刻。
运行结果
--------------------------------------------------------------------------------------------------------------------------------------------------
7-3 横平竖直
程序填空题。根据题目要求完善下面的代码。请提交完整代码。 一个木块如果高度比宽度大,我们说它是竖着放的,否则我们说它是平放的。 读入一个木块的高度和宽度。如果它是平放的,则输出A,否则输出B。
输入格式:输入在一行中给出2个绝对值不超过1000的正整数A和B。
输出格式:在一行中输出一个字符A或者B。
输入样例:
50 50
输出样例:
A
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); int height, width; char status; height = in.nextInt(); width = in.nextInt(); Board board = new Board(height, width); status = board.getStatus(); System.out.print(status); } } class Board{ int height, width; public Board(int height, int width){ this.height = height; this.width = width; } public char getStatus(){ if(height<=width){ return status(1); }else{ return status(1.0); } } public char status(double rate){ } public char status(int rate){ } }
补全代码如下:
import java.util.Scanner; public class hw{ public static void main(String[] args){ Scanner in = new Scanner(System.in); int height, width; char status; //运用重载方法 height = in.nextInt(); width = in.nextInt(); Board board = new Board(height, width); status = board.getStatus(); System.out.print(status); } } class Board{ int height, width; public Board(int height, int width){ this.height = height; this.width = width; } public char getStatus(){ int A=1,B=0; if(height<=width){ return status(1); }else{ //定义不同类型的返回值 return status(1.0); } } public char status(double rate){ System.out.println("B"); //double为竖着放 return 0; //返回主类输出B } public char status(int rate){ System.out.println("A"); //int为平着放 return 0; //返回主类输出A } }
程序设计思路
看到getStatus想到了重载方法,依次读代码发现程序已经进行宽高对比并进行了不同参数类型的返回,题中空缺处需要的就是根据不同的参数类型判断为A或B输出并返回到主类中即可。
运用知识点
重载方法、不同参数类型、类中参数传值
感想
考试中第三道做了这个题首先观察主类,向下看到getStatus翻书知道是重载方法,再向下发现已经比较了宽和高现在只需要输出,当时想1和1.0的区别,看到空缺才发现是根据参数不同类型来区分怎么放置,之后想到只要判断好直接输出AB并返回即可。提交答案后显示答案错误,检查好多遍最后发现是缩进的问题,总体分析时间不长只是排错花了一些时间。
运行结果
--------------------------------------------------------------------------------------------------------------------------------------------------
7-4 程序改错题
程序改错题。以下代码存在错误,请修改后提交。
输入样例:
无
输出样例:
animal shout!
wangwang……
Dog is running
public class Main { public static void main(String[] args) { Animal animal = new Dog(); animal.shout(); animal.run(); } } class Animal { void shout() { System.out.println("animal shout!"); } } class Dog extends Animal { void shout() { super.shout(); System.out.println("wangwang……"); } void run() { System.out.println("Dog is running"); } }
修改后的代码如下:
public class Main1 { public static void main(String[] args) { Animal animal = new Dog(); animal.shout(); animal.run(); } } class Animal { void shout() { System.out.println("animal shout!"); } void run(){ System.out.println("animal run!"); } } class Dog extends Animal { void shout() { super.shout(); System.out.println("wangwang……"); } void run() { System.out.println("Dog is running"); } }
程序设计思路
当子类继承父类时,子类无法实例化输出自己的方法,在父类定义一个构造方法,子类dog构造时就可以实例化输出
运用知识点
子类继承
感想
这是我第一个做的题,考试中使用eclipse软件进行排错,由于是考试排错完就成功了也根本没考虑到底是什么原因错了。考试后才发现是子类继承问题,子类无法输出其中的方法,需要在父类中定义一个构造方法,在子类dog构造run时就可以写run函数。
运行结果
由于出现编码GBK的不可映射字符所以无法截图
animal shout!
wangwang……
Dog is running
--------------------------------------------------------------------------------------------------------------------------------------------------
2018-10-1312:23:06
学习内容 | 代码(行) | 博客(字) |
helloworld | 15 | -- |
输入输出数据 | 53 | -- |
循环结构 | 50 | -- |
第一次考核 |
47 | 1320(WPS统计) |
课堂练习(父类和子类继承、构造方法、关键字) | 89 | -- |
第二次考核(父类子类继承、创建类、构造方法、参数传值、关键字) | 111 | 2246(WPS统计) |