实 验 报 告

( 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对象,并显示或修改这两个对象的属性值。

packagelg.test;//测试类

public classDemo31 {public static voidmain(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());

}

}classStudent {privateString studentID;privateString name;privateString sex;private intage;private static intcount;public static intgetCount() {returncount;

}

Student(String studentID, String name, String sex,intage) {this.studentID =studentID;this.name =name;this.sex =sex;this.age =age;

}

@OverridepublicString toString() {return "Student{" +

"studentID='" + studentID + '\'' +

", name='" + name + '\'' +

", sex='" + sex + '\'' +

", age=" + age +

'}';

}//studen的set和get方法

publicString getStudentID() {returnstudentID;

}public voidsetStudentID(String studentID) {this.studentID =studentID;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}publicString getSex() {returnsex;

}public voidsetSex(String sex) {this.sex =sex;

}public intgetAge() {returnage;

}public void setAge(intage) {this.age =age;

}public static void setCount(intcount) {

Student.count=count;

}

}//新建立的CoolegeStudent对象

class CollegeStudent extendsStudent{privateString profession;

CollegeStudent(String studentID, String name, String sex,intage, String profession) {super( studentID, name, sex, age );this.profession =profession;

}//属性的get & set方法

publicString getProfession() {returnprofession;

}public voidsetProfession(String profession) {this.profession =profession;

}

@OverridepublicString toString() {return "CollegeStudent{" +

"profession='" + profession + '\'' +

"studentID='" + super.getStudentID() + '\'' +

", name='" + super.getName() + '\'' +

", sex='" + super.getSex() + '\'' +

", age=" + super.getAge() +

'}';

}

}

View Code

2. 设计一个人员类(Person),其中包含一个方法pay,代表人员的工资支出。再从Person类派生出助教类(Assistant)、

讲师类(Instructor)、副教授类(Assistant Professor)和教授类(Professor)。其中:工资支出=基本工资+授课时数*每课时兼课金。

但助教基本工资为800,每课时兼课金25,讲师基本工资为1000,每课时兼课金35,

副教授基本工资为1200,每课时兼课金40,教授基本工资为1400,每课时兼课金50。

① 将Person定义为抽象类,pay为抽象方法,设计程序实现多态性。

② 将Person定义为接口,设计程序实现多态性。

第一:通过类来实现

classPerson {public intbasic;public inthour;public intcharge;publicPerson() {

}public Person(int basic, intcharge) {this.basic =basic;this.charge =charge;

}public void pay(inthour) {

System.out.println( hour+ "小时后的工资为" + (basic + hour *charge) );

}

}class Assistant extendsPerson {publicAssistant() {super( 800, 25);

}

}class Instructor extendsPerson {publicInstructor() {super( 1000, 35);

}

}class AssistantProfessor extendsPerson {publicAssistantProfessor() {super( 1200, 40);

}

}class Professor extendsPerson {publicProfessor() {super( 1400, 50);

}

}

View Code

第二:通过抽象方法实现

abstract classPerson {public inthour;//public int basic;//public int charge;//public Person() {//}//public Person(int basic, int charge) {//this.basic = basic;//this.charge = charge;//}

public abstract void pay(inthour);

}class Assistant extendsPerson {

@Overridepublic void pay(inthour) {

System.out.println( hour+ "小时后的工资为" + (800 + hour * 25) );

}//public Assistant() {//super( 800, 25 );//}

}class Instructor extendsPerson {

@Overridepublic void pay(inthour) {

System.out.println( hour+ "小时后的工资为" + (1000 + hour * 35) );

}//public Instructor() {//super( 1000, 35 );//}

}class AssistantProfessor extendsPerson {

@Overridepublic void pay(inthour) {

System.out.println( hour+ "小时后的工资为" + (1200 + hour * 40) );

}//public AssistantProfessor() {//super( 1200, 40 );//}

}class Professor extendsPerson {

@Overridepublic void pay(inthour) {

System.out.println( hour+ "小时后的工资为" + (1400 + hour * 50) );

}//public Professor() {//super( 1400, 50 );//}

}

View Code

第三:通过接口实现

interfacePerson {void pay(inthour);

}class Assistant implementsPerson {

@Overridepublic void pay(inthour) {

System.out.println( hour+ "小时后的工资为" + (800 + hour * 25) );

}//public Assistant() {//super( 800, 25 );//}

}class Instructor implementsPerson {

@Overridepublic void pay(inthour) {

System.out.println( hour+ "小时后的工资为" + (1000 + hour * 35) );

}//public Instructor() {//super( 1000, 35 );//}

}class AssistantProfessor implementsPerson {

@Overridepublic void pay(inthour) {

System.out.println( hour+ "小时后的工资为" + (1200 + hour * 40) );

}//public AssistantProfessor() {//super( 1200, 40 );//}

}class Professor implementsPerson {

@Overridepublic void pay(inthour) {

System.out.println( hour+ "小时后的工资为" + (1400 + hour * 50) );

}//public Professor() {//super( 1400, 50 );//}

}

View Code

3. 从键盘输入两个数,进行相除,显示商。当输入串中含有非数字时或除数为0时,通过异常处理机制,使程序能正确运行。

packageleetcode;importjava.util.InputMismatchException;importjava.util.Scanner;/*** @Author liguo

* @Description . 从键盘输入两个数,进行相除,显示商。当输入串中含有非数字时或除数为0时,通过异常处理机制,使程序能正确运行。

* @Data 2018-04-03*/

public classDemo {public static voidmain(String[] args) {int oper1 = 0; //定义被除数

int oper2 = 0; //定义除数

Scanner in = newScanner( 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("程序结束");

}

}

}

View Code

四、实验小结(包括问题和解决方法、心得体会等)

使用try-catch进行异常处理,遇到很多问题

1:不知道捕获异常的种类

2:关于异常的处理

3:输入输出格式异常的处理,关于Scanner方法,使用in.nexInt()方法,其读取的

都是控制台中的第一行。

//网上测试的好多异常处理,亲测并不能使用。

南邮java大作业实验报告_南京邮电大学java第三次实验报告相关推荐

  1. 南京邮电大学java实验报告_南京邮电大学java第二次实验报告

    三.实验内容 1. 寻找并输出11~999之间的数m,它满足m.m2.m3均为回文数.回文数是各位数字左右对称的整数.判断是否为回文要求通过编写方法来完成. packageTest;/*** @Aut ...

  2. 南信与南邮谁的计算机专业更强,南京信息工程大学和南京邮电大学,谁更强!网友:“不相上下”!...

    遍数全国的名校中,南京地区的名校不在少数.仅仅是985高校就有南京大学和东南大学两所,211院校也有南京航空航天大学.南京理工大学.南京师范大学.南京农业大学.河海大学.中国药科大学等不少知名高校. ...

  3. 南京邮电大学c语言实验报告5,南京邮电大学C语言大一上期末复习.pdf

    南京邮电大学C语言大一上期末复习.pdf 高级语言程序设计期末总复习高级语言程序设计期末总复习 课程的全部内容可分为五大模块课程的全部内容可分为五大模块 1 1基础知识基础知识 2 2三种基本结构及流 ...

  4. java实验文法报告_西安邮电大学编译原理LL文法分析器实验(java).doc

    西安邮电大学编译原理LL文法分析器实验(java) <编译原理>实验报告 题目: 语法分析器的制作 学生姓名: 班 级: 软件1202 学 号: 指导教师: 成 绩: 西安邮电大学计算机学 ...

  5. java合肥工业大学考试题库_合肥工业大学java程序设计实验二

    合肥工业大学java程序设计实验二 1 / 3<Java 程序设计>实验报告--实验 2实验室:三.四机房 2014 年 05 月 22日学院 计算机与信息学院 专业班级 姓名 成绩课程名 ...

  6. 南邮Android大作业(连连看口袋妖怪版)

    基础原型: https://blog.csdn.net/ouyang_peng/article/details/14115627 修改: 可以选择游戏难度:简单.普通.困难(其实就是图片变多了) 每个 ...

  7. 北邮大二大物期末_北京邮电大学2015大学物理期末考试试题.pdf

    北京邮电大学2015大学物理期末考试试题 北京邮电大学2015--2016学年第 一 学期 <大学物理B (下)>期末考试试题 考 一.学生参加考试须带学生证或学院证明,未带者不准进入考场 ...

  8. 南京邮电大学java程序设计作业在线编程第二次作业

    王利国的"Java语言程序设计第2次作业(2018)"详细 作业结果详细 总分:100 选择题得分:60  1. 表达式9==8&&3<7的运算结果是( ) ...

  9. 南京邮电大学Java软件开发(混合式)实验2:银行账户管理——面向对象

    一. Java 类与对象的基本知识: 1. 类的定义 2. 方法重载 3. 构造方法 4. static 关键字 5. this 关键字 6. 包与import 语句 7. 访问权限 8. 对象的使用 ...

最新文章

  1. edgeR:一个数字基因表达数据差异表达分析Bioconductor程序包
  2. C语言 函数递归例题解析
  3. Notepad++ 查找替换 换行符的方法
  4. Python 安装modules问题及import问题
  5. 【个人笔记】OpenCV4 C++ 快速入门 29课
  6. mybatis中的SqlMapConfig.xml配置文件基本使用
  7. 非平稳序列的随机性分析(SAS)
  8. 【博客分享】优秀的有趣的博客
  9. PPT进行图片的背景去除以及填充新背景,保存图片为PDF
  10. 红日安全ATT&CK靶机实战系列之vulnstack1
  11. PID LSim PT3这个仿真模块 S7-1200 S7-1500 CPU下载
  12. Lib库使用学习笔记
  13. NBUT1225 NEW RDSP MODE I(快速幂,规律)
  14. 如何修复png图片?简单的方法
  15. 百度地图 标记聚合器MarkerClusterer结合TextIconOverlay,根据标记点的属性更换聚合器的样式
  16. 文件File 的使用
  17. 一文读懂电磁学发展史[图文版]
  18. 在二叉树中找到两个节点的最近公共祖先(C++)
  19. 云适配CEO陈本峰:移动办公真正产生商业价值要落到实际场景中
  20. Java算法(八)详细解析:寻找完数

热门文章

  1. javascript最快入门
  2. 创建、添加字段IFields
  3. [转]机器视觉开源代码集合
  4. 【原创】TLV5618芯片驱动程序
  5. floa和position
  6. vs2005中文的,可是有180天的适用期,哪位高手能破了啊
  7. web.config加密解密批处理
  8. Lintcode 408 解题思路及c++代码
  9. Python作为机器学习语言的老大,跟在它后面的语言都是谁?
  10. TI C6000DSP上TCP/IP协议栈的实现