南京邮电大学java第三次实验报告
实 验 报 告
( 2017 / 2018学年 第2学期)
课程名称 |
JAVA语言程序设计 |
|||||
实验名称 |
Java集成开发环境的安装与使用、 Java变量、表达式与控制结构 |
|||||
实验时间 |
2018 |
年 |
4 |
月 |
11 |
日 |
指导单位 |
计算机学院软件教学中心 |
|||||
指导教师 |
许棣华 |
学生姓名 |
王利国 |
班级学号 |
B160209 |
学院(系) |
电子与光学工程学院,微电子学院 |
专 业 |
微电子科学与工程 |
实验名称 |
方法、数组和类 |
指导教师 |
许棣华 |
||||||||
实验类型 |
上机 |
实验学时 |
2 |
实验时间 |
2017.4.11 |
三、实验内容
1. 在前面实验二已定义的学生类Student的基础上,以Student类为父类,为学生类派生出一个子类为大学生类(CollegeStudent)。
CollegeStudent 类在学生类上增加一个专业(profession)数据属性;方法上增加获得专业和设置专业两个方法。并对超类中的toString( )方法进行重写,使得CollegeStudent类中的toString( )方法除了显示学生类的信息外,还要显示它的专业属性。
编写测试程序的主类。在主类中创建一个Student对象和CollegeStudent对象,并显示或修改这两个对象的属性值。
package lg.test;
//测试类 public class Demo31 { public static void main(String[] args) { Student one = new Student( "16020912", "王宁宁","男" , 19 ); CollegeStudent two = new CollegeStudent( "16020913", "王利国","男" , 19 ,"微电子科学与工程" ); System.out.println("未进行修改的时候的属性值"); System.out.println(one.toString()); System.out.println(two.toString()); System.out.println("修改后的属性值"); one.setAge( 20 ); two.setProfession( "微电子" ); System.out.println(one.toString()); System.out.println(two.toString()); } } class Student { private String studentID; private String name; private String sex; private int age; private static int count; public static int getCount() { return count; } Student(String studentID, String name, String sex, int age) { this.studentID = studentID; this.name = name; this.sex = sex; this.age = age; } @Override public String toString() { return "Student{" + "studentID='" + studentID + '\'' + ", name='" + name + '\'' + ", sex='" + sex + '\'' + ", age=" + age + '}'; } //studen的set和get方法 public String getStudentID() { return studentID; } public void setStudentID(String studentID) { this.studentID = studentID; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public static void setCount(int count) { Student.count = count; } } //新建立的CoolegeStudent对象 class CollegeStudent extends Student{ private String profession; CollegeStudent(String studentID, String name, String sex, int age, String profession) { super( studentID, name, sex, age ); this.profession = profession; } //属性的get & set方法 public String getProfession() { return profession; } public void setProfession(String profession) { this.profession = profession; } @Override public String toString() { return "CollegeStudent{" + "profession='" + profession + '\'' + "studentID='" + super.getStudentID() + '\'' + ", name='" + super.getName() + '\'' + ", sex='" + super.getSex() + '\'' + ", age=" + super.getAge() + '}'; } }
2. 设计一个人员类(Person),其中包含一个方法pay,代表人员的工资支出。再从Person类派生出助教类(Assistant)、
讲师类(Instructor)、副教授类(Assistant Professor)和教授类(Professor)。其中:工资支出=基本工资+授课时数*每课时兼课金。
但助教基本工资为800,每课时兼课金25,讲师基本工资为1000,每课时兼课金35,
副教授基本工资为1200,每课时兼课金40,教授基本工资为1400,每课时兼课金50。
① 将Person定义为抽象类,pay为抽象方法,设计程序实现多态性。
② 将Person定义为接口,设计程序实现多态性。 第一:通过类来实现
class Person { public int basic; public int hour; public int charge; public Person() { } public Person(int basic, int charge) { this.basic = basic; this.charge = charge; } public void pay(int hour) { System.out.println( hour + "小时后的工资为" + (basic + hour * charge) ); } } class Assistant extends Person { public Assistant() { super( 800, 25 ); } } class Instructor extends Person { public Instructor() { super( 1000, 35 ); } } class AssistantProfessor extends Person { public AssistantProfessor() { super( 1200, 40 ); } } class Professor extends Person { public Professor() { super( 1400, 50 ); } }
第二:通过抽象方法实现
abstract class Person { public int hour; // public int basic; // public int charge; // public Person() { // } // public Person(int basic, int charge) { // this.basic = basic; // this.charge = charge; // } public abstract void pay(int hour); } class Assistant extends Person { @Override public void pay(int hour) { System.out.println( hour + "小时后的工资为" + (800 + hour * 25) ); } // public Assistant() { // super( 800, 25 ); // } } class Instructor extends Person { @Override public void pay(int hour) { System.out.println( hour + "小时后的工资为" + (1000 + hour * 35) ); } // public Instructor() { // super( 1000, 35 ); // } } class AssistantProfessor extends Person { @Override public void pay(int hour) { System.out.println( hour + "小时后的工资为" + (1200 + hour * 40) ); } // public AssistantProfessor() { // super( 1200, 40 ); // } } class Professor extends Person { @Override public void pay(int hour) { System.out.println( hour + "小时后的工资为" + (1400 + hour * 50) ); } // public Professor() { // super( 1400, 50 ); // } }
第三:通过接口实现
interface Person { void pay(int hour); } class Assistant implements Person { @Override public void pay(int hour) { System.out.println( hour + "小时后的工资为" + (800 + hour * 25) ); } // public Assistant() { // super( 800, 25 ); // } } class Instructor implements Person { @Override public void pay(int hour) { System.out.println( hour + "小时后的工资为" + (1000 + hour * 35) ); } // public Instructor() { // super( 1000, 35 ); // } } class AssistantProfessor implements Person { @Override public void pay(int hour) { System.out.println( hour + "小时后的工资为" + (1200 + hour * 40) ); } // public AssistantProfessor() { // super( 1200, 40 ); // } } class Professor implements Person { @Override public void pay(int hour) { System.out.println( hour + "小时后的工资为" + (1400 + hour * 50) ); } // public Professor() { // super( 1400, 50 ); // } }
3. 从键盘输入两个数,进行相除,显示商。当输入串中含有非数字时或除数为0时,通过异常处理机制,使程序能正确运行。
package leetcode; import java.util.InputMismatchException;
import java.util.Scanner; /**
* @Author liguo
* @Description . 从键盘输入两个数,进行相除,显示商。当输入串中含有非数字时或除数为0时,通过异常处理机制,使程序能正确运行。
* @Data 2018-04-03
*/
public class Demo {
public static void main(String[] args) {
int oper1 = 0; //定义被除数
int oper2 = 0; //定义除数
Scanner in = new Scanner( System.in );
try {
//数据输入和输出
System.out.print( "请输入被除数:" );
oper1 = in.nextInt();
System.out.print( "请输入除数:" );
oper2 = in.nextInt();
System.out.println( "计算结果:" + oper1 / oper2 );
} catch (ArithmeticException e2) {
System.out.println( "异常1:除数为零!,请重新输入除数" );
oper2 = in.nextInt();
System.out.println( "计算结果:" + oper1 / oper2 );
} catch (InputMismatchException e1) {
System.out.println( "异常2:输入不为数字!,请重新输入" );
// int one = in.nextInt();
// int two = in.nextInt();
// System.out.println( "计算结果:" + one / two );
System.out.print( "请输入被除数:" );
String a = in.next();
oper1 = in.nextInt();
System.out.print( "请输入除数:" );
oper2 = in.nextInt();
System.out.println( "计算结果:" + oper1 / oper2 );
}
// catch (NumberFormatException e4) {;
// System.out.println( "FormatException4:" + e4.getMessage() );
// oper1 = in.nextInt();
// oper2 = in.nextInt();
// System.out.println( "计算结果:" + oper1 / oper2 );
// }
finally {
System.out.println( "程序结束" );
}
}
}
四、实验小结(包括问题和解决方法、心得体会等)
使用try-catch进行异常处理,遇到很多问题
1:不知道捕获异常的种类
2:关于异常的处理
3:输入输出格式异常的处理,关于Scanner方法,使用in.nexInt()方法,其读取的
都是控制台中的第一行。
//网上测试的好多异常处理,亲测并不能使用。
南京邮电大学java第三次实验报告的更多相关文章
- 南京邮电大学java第四次实验报告
实 验 报 告 ( 2017 / 2018学年 第2学期) 课程名称 JAVA语言程序设计 实验名称 Java集成开发环境的安装与使用. Java变量.表达式与控制结构 实验时间 2018 年 6 月 ...
- 南京邮电大学java第一次实验报告
实 验 报 告 ( 2017 / 2018学年 第2学期) 课程名称 JAVA语言程序设计 实验名称 Java集成开发环境的安装与使用. Java变量.表达式与控制结构 实验时间 2018 年 4 月 ...
- 南京邮电大学java第二次实验报告
实 验 报 告 ( 2017 / 2018学年 第2学期) 课程名称 JAVA语言程序设计 实验名称 Java集成开发环境的安装与使用. Java变量.表达式与控制结构 实验时间 2018 年 4 月 ...
- java第三次实验报告
北京电子科技学院(BESTI) 实验报告 课程: Java程序设计 班级: 1352 姓名: 池彬宁 学号: 20135212 成绩: 指导教师: 娄嘉鹏 实验日期: 2015.6.3 实验密级: 无 ...
- 南京邮电大学java程序设计作业在线编程第三次作业
王利国的"Java语言程序设计第3次作业(2018)"详细 作业结果详细 总分:100 选择题得分:60 1. 设有如下定义语句: String s1="My cat& ...
- 南京邮电大学java程序设计作业在线编程第六次作业
王利国的的 "Java语言程序设计第6次作业(2018)" 详细 主页 我的作业列表 作业结果详细 总分:100 选择题得分:60 1. Java中所有类的父类是(). A.Fa ...
- 南京邮电大学java程序设计作业在线编程第七次作业
王利国的"Java语言程序设计第7次作业(2018)"详细 主页 我的作业列表 作业结果详细 总分:100 选择题得分:60 1. 下列叙述中,错误的是( ). A.Java中, ...
- 南京邮电大学java程序设计作业在线编程第四次作业
王利国的的 "Java语言程序设计第4次作业(2018)" 详细 主页 我的作业列表 作业结果详细 总分:100 选择题得分:40 1.下列方法定义中,正确的是() A.doub ...
- 南京邮电大学java程序设计作业在线编程第二次作业
王利国的"Java语言程序设计第2次作业(2018)"详细 作业结果详细 总分:100 选择题得分:60 1. 表达式9==8&&3<7的运算结果是( ) ...
随机推荐
- CSS怎么在项目里引入自定义字体(@font-face)
前言: 以前我一直用内置的默认字体给文字设置字体,直到一天UI妹纸给了我下面的字体 当时我是蒙蔽的,这个字体的效果如下 默认字体并无该字体,直接设置是没有效果的,这时就需要用到自定义字体了 下面 ...
- [Swift]LeetCode275. H指数 II | H-Index II
Given an array of citations sorted in ascending order (each citation is a non-negative integer) of a ...
- [Swift]LeetCode846. 一手顺子 | Hand of Straights
Alice has a hand of cards, given as an array of integers. Now she wants to rearrange the cards into ...
- MyBatis增、删、改、查
1.config.xml文件的基本配置信息 2.选择数据源 3.mybatis约定 (1)parameterType和resultType 只能传一个参数,但是我们可以传一个数组或者集合,达到传多个参 ...
- Python档案袋(函数与函数装饰器 )
特点:代码复用.可扩展.保持一致性 函数简单的实现,返回值的不同: #定义方法 def funx1(): pass def funx2(): return 0 def funx3(): return ...
- (转)浅谈Session与Cookie的区别与联系
一.Session的概念 Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标 ...
- js的预解析
在ES6之前,变量使用var声明,会存在变量的预解析(函数也有预解析).ES6引了let和const,但是现阶段ES6并没有完全普及,而且很多比较老的代码都还是按照ES5的标准甚至是ES3的标准来书写 ...
- SpringBoot启动如何加载application.yml配置文件
一.前言 在spring时代配置文件的加载都是通过web.xml配置加载的(Servlet3.0之前),可能配置方式有所不同,但是大多数都是通过指定路径的文件名的形式去告诉spring该加载哪个文件: ...
- linux清空文件内容的几种方式与区别
虽然linux清空文件内容的方式有很多种,但是他们之间有着细微的差别.通过实践我将他们分为两类: 将文件清空,文件大小为0k $ : > filename $ > filename $ ...
- Mongodb的集合插入一个字段
在mongodb的现有集合中增加一个字段: db.rules.update({"_id" : ObjectId("587e5e0e09a4670334208e88&quo ...