实 验 报 告

( 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第三次实验报告的更多相关文章

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

    实 验 报 告 ( 2017 / 2018学年 第2学期) 课程名称 JAVA语言程序设计 实验名称 Java集成开发环境的安装与使用. Java变量.表达式与控制结构 实验时间 2018 年 6 月 ...

  2. 南京邮电大学java第一次实验报告

    实 验 报 告 ( 2017 / 2018学年 第2学期) 课程名称 JAVA语言程序设计 实验名称 Java集成开发环境的安装与使用. Java变量.表达式与控制结构 实验时间 2018 年 4 月 ...

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

    实 验 报 告 ( 2017 / 2018学年 第2学期) 课程名称 JAVA语言程序设计 实验名称 Java集成开发环境的安装与使用. Java变量.表达式与控制结构 实验时间 2018 年 4 月 ...

  4. java第三次实验报告

    北京电子科技学院(BESTI) 实验报告 课程: Java程序设计 班级: 1352 姓名: 池彬宁 学号: 20135212 成绩: 指导教师: 娄嘉鹏 实验日期: 2015.6.3 实验密级: 无 ...

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

    王利国的"Java语言程序设计第3次作业(2018)"详细 作业结果详细 总分:100 选择题得分:60  1. 设有如下定义语句: String s1="My cat& ...

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

    王利国的的 "Java语言程序设计第6次作业(2018)" 详细 主页 我的作业列表 作业结果详细 总分:100 选择题得分:60  1. Java中所有类的父类是(). A.Fa ...

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

    王利国的"Java语言程序设计第7次作业(2018)"详细 主页 我的作业列表 作业结果详细 总分:100 选择题得分:60  1. 下列叙述中,错误的是( ). A.Java中, ...

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

    王利国的的 "Java语言程序设计第4次作业(2018)" 详细 主页 我的作业列表 作业结果详细 总分:100 选择题得分:40  1.下列方法定义中,正确的是() A.doub ...

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

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

随机推荐

  1. WordPress外链新窗口打开并使用php页面go跳转

    之前浏览别人的博客网站,打开外链时会有一个等待时间的代码,虽然不知道有什么用,但觉的挺有档次..今天正好看到教程,就自己也加上了,就复制粘贴些代码可以了 首先创建一个php文件,名字随便,如果你不想改 ...

  2. Javascript高级编程学习笔记(92)—— Canvas(9) 渐变

    渐变 渐变由 canvasGradient 实例表示 要创建一个渐变对象需要调用 createLinearGradient() 方法 该方法接收四个参数: 起点的x坐标 起点的y坐标 终点的x坐标 终 ...

  3. [Swift]LeetCode283. 移动零 | Move Zeroes

    Given an array nums, write a function to move all 0's to the end of it while maintaining the relativ ...

  4. 4.Git基础-查看提交历史

    1.查看提交历史 --  git log  使用 git log 可以查看到所有的提交(commit)历史. 1. $ git log 列出所有commit,最新的commit在最上面.会显示每个提交 ...

  5. Hive篇---Hive与Hbase整合

     一.前述 Hive会经常和Hbase结合使用,把Hbase作为Hive的存储路径,所以Hive整合Hbase尤其重要. 二.具体步骤 hive和hbase同步https://cwiki.apache ...

  6. 微信小程序实战--集阅读与电影于一体的小程序项目(一)

    1.首页欢迎界面 项目目录结构 新建项目ReaderMovie,然后新建文件,结构如下 welcome.wxml <view class='container'> <image cl ...

  7. JVM基础系列第7讲:JVM 类加载机制

    当 Java 虚拟机将 Java 源码编译为字节码之后,虚拟机便可以将字节码读取进内存,从而进行解析.运行等整个过程,这个过程我们叫:Java 虚拟机的类加载机制.JVM 虚拟机执行 class 字节 ...

  8. java代码之美(1)---Lambda

    Lambda 一.概述 1.什么是Lambda表达式 Lambda 表达式是一种匿名函数,简单地说,它是没有声明的方法,也即没有访问修饰符.返回值声明和名字. 它可以写出更简洁.更灵活的代码.作为一种 ...

  9. Vue API(directives) 自定义指令

    前言:除了vue的内置指令以外,我们可以定义自定义指令.内置指令表相见:https://www.cnblogs.com/ilovexiaoming/p/6840383.html 我们定义一个最简单的 ...

  10. Linux下Redis的安装配置

    环境: centos7  PHP7 1.切到准备安装的目录 cd /usr/local 2.下载Redis wget http://download.redis.io/redis-stable.tar ...