编辑时间:2021.10.2

7-5 复数类的定义

编写一个复数类,可以进行复数加法和减法运算。编写一个包含main方法的类测试该复数类。要求该复数类至少包含一个无参的构造方法和一个带参的构造方法;数据成员包括复数的实部和虚部,为double类型;包括两个方法,分别实现复数的加法和减法运算。测试代码如下:

public static void main(String [] args){Complex a=new Complex();Complex b=new Complex();Scanner in=new Scanner(System.in);a.setRealPart(in.nextDouble());a.setImaginaryPart(in.nextDouble());b.setRealPart(in.nextDouble());b.setImaginaryPart(in.nextDouble());System.out.println(a);System.out.println(b);System.out.println(a.add(b));System.out.println(a.sub(b));       }

输入格式:
输入两个复数。输入为两行,每一行为一个复数的实部和虚部,用空格隔开。

输出格式:
输出复数加法和减法结果。输出为4行,第一行和第二行输出两个复数,第三行为两个复数的加法运算结果,第四行为减法运算结果。

输入样例:
在这里给出两组输入。例如:

1 2
3 4

-1 2
1 2

输出样例:
在这里给出相应的输出。例如:

1.0+2.0i
3.0+4.0i
4.0+6.0i
-2.0-2.0i

-1.0+2.0i
1.0+2.0i
4.0i
-2.0

代码如下:


import java.util.*;
class Complex{double real;double image;Complex(){};public Complex(double r,double im) {real=r;image=im;}public void setRealPart(double r) {real=r;}public void setImaginaryPart(double im) {image=im;}  public Complex add(Complex p) {return new Complex(real+p.real,image+p.image);}public Complex sub(Complex p) {return new Complex(real-p.real,image-p.image);}public String toString() { //toString()方法if(real==0&&image==0) {return 0+"";}else if(real==0&&image!=0) {return image+"i";}else if(real!=0&&image>0) {return real + "+" + image + "i";}else if(real!=0&&image==0) {return real+"";}else {return real +""+ image + "i";          }}
}
public class Main {public static void main(String [] args){Complex a=new Complex();Complex b=new Complex();Scanner in=new Scanner(System.in);a.setRealPart(in.nextDouble());a.setImaginaryPart(in.nextDouble());b.setRealPart(in.nextDouble());b.setImaginaryPart(in.nextDouble());System.out.println(a);System.out.println(b);System.out.println(a.add(b));System.out.println(a.sub(b));      }
}

7-6 Employee类的层级结构

定义四个类,分别为Employee类、SalariedEmployee类、HourlyEmployee类和CommissionEmployee类。其中Employee类是其他三个类的父类。Employee类包含姓名和身份证号。

除此之外,SalariedEmployee类还应包含每月工资;HourlyEmployee类还应包含每小时工资数和工作时间数;CommissionEmployee还应包含提成比例和销售总额。其中HourlyEmployee的工资为:每小时工资数×工作时间数,CommissionEmployee的工资为:提成比例×销售总额。每个类都应有合适的构造方法、数据成员的设置和读取方法。编写一个测试程序,创建这些类的对象,并输出与对象相关的信息。注意子类有时需调用父类的构造方法和被覆盖的方法,成员变量定义为private,对有些方法实现重载。

测试程序如下所示:

public static void main(String [] args){Scanner in=new Scanner(System.in);Employee [] e=new Employee[3];e[0]=new SalariedEmployee(in.next(),in.next(),in.nextDouble());e[1]=new HourlyEmployee(in.next(),in.next(),in.nextDouble(),in.nextDouble());e[2]=new CommissionEmployee(in.next(),in.next(),in.nextDouble(),in.nextDouble());for(int i=0;i<e.length;i++){    System.out.println(e[i].getSalary());System.out.println(e[i]);}}

输入格式:
输入三行。第一行为一个SalariedEmployee对象的姓名,身份证号和每月工资。第二行为一个HourlyEmployee对象的姓名、身份证号、每小时工资数、工作时间。第三行为一个CommissionEmployee对象的姓名、身份证号、提成比例和销售总额。

输出格式:
输出三个对象的工资和对象的其他信息。每一个对象输出两行,第一行为工资,第二行为对象的信息。

输入样例:

Mike 0001 5000
Jack 0002 20 300
Tom 0003 0.2 50000

输出样例:

5000.0
SalariedEmployee[name=Mike,id=0001][monthSalary=5000.0]
6000.0
HourlyEmployee[name=Jack,id=0002][hourSalary=20.0,workhour=300.0]
10000.0
CommissionEmployee[name=Tom,id=0003][commissionRatio=0.2,sale=50000.0]

代码如下:


import java.util.*;
class Employee{String name;String id;Employee(){};public Employee(String n,String i) {name=n;id=i;}public void show() {}
}
class SalariedEmployee extends Employee{double money;SalariedEmployee(){};public SalariedEmployee(String n,String i,double m) {//Employee(n,i);super(n,i);money=m;}public void show() {System.out.println(money);System.out.println("SalariedEmployee[name="+name+",id="+id+"][monthSalary="+money+"]");}
}
class HourlyEmployee extends Employee{double h_money;//每小时工资数double time;//工作时间HourlyEmployee(){};public HourlyEmployee(String n,String i,double h_m,double t) {super(n,i);h_money=h_m;time=t;}public void show() {System.out.println(h_money*time);System.out.println("HourlyEmployee[name="+name+",id="+id+"][hourSalary="+h_money+",workhour="+time+"]");}
}
class CommissionEmployee extends Employee{double sc;//提成比例double m_money;//销售总额CommissionEmployee(){};public CommissionEmployee(String n,String i,double s,double m_m) {super(n,i);sc=s;m_money=m_m;}public void show() {System.out.println(sc*m_money);System.out.println("CommissionEmployee[name="+name+",id="+id+"][commissionRatio="+sc+",sale="+m_money+"]");}
}
public class Main {public static void main(String [] args){Scanner in=new Scanner(System.in);Employee [] e=new Employee[3];e[0]=new SalariedEmployee(in.next(),in.next(),in.nextDouble());e[1]=new HourlyEmployee(in.next(),in.next(),in.nextDouble(),in.nextDouble());e[2]=new CommissionEmployee(in.next(),in.next(),in.nextDouble(),in.nextDouble());for(int i=0;i<e.length;i++){    //System.out.println(e[i].getSalary());//System.out.println(e[i].show());e[i].show();}}
}

Java——第二次上机(第二部分)相关推荐

  1. Java 北大青鸟 第一学期 第二章 上机练习

    Java 北大青鸟 第一学期 第二章 上机练习 手中牌互换 华氏度摄氏度 银行定期储蓄业务 数据类型 源文件下载 手中牌互换 public static void main(String[] args ...

  2. 《深入理解Java虚拟机》(第二版)学习3:垃圾收集器

    垃圾收集器 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现. 我们这里讨论的收集器主要是基于JDK 1.7 Update 14之后的 Hotspot VM . Serial 收 ...

  3. GitHub年度报告:Python首次击败Java,中国成第二大开源贡献国

    十三 边策 发自 凹非寺  量子位 编译 | 公众号 QbitAI GitHub今天发布了年度报告.去年有1000万的新开发者加入了GitHub社区,80%的repo贡献来自于美国本土之外,中国对开源 ...

  4. matlab第二次上机作业答案,第二次上机作业

    第二次上机作业 目的: 运行课本第四章及课堂上讲过的例子,掌握Matlab的流程控制语句.函数及脚本文件的编程.调试方法. 要求:1.本次作业要求全部写M文件:2题目要求未明确要求写脚本文件还是函数文 ...

  5. 计算机组成原理上机实验报告.doc,计算机组成原理第二次上机实验报告.doc

    <计算机组成原理第二次上机实验报告.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<计算机组成原理第二次上机实验报告.doc>文档请在天天文库搜索 ...

  6. c++第二次上机实验项目二

    /* * 文件名称: c++第二次上机实验项目2 * 作 者: 谢文锐* 完成日期: 2016 年 3 月 24 日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分:* 输入描述: 输入一个 ...

  7. Educoder–Java高级特性(第二章)- 集合框架【笔记+参考代码】

    Educoder–Java高级特性(第二章)- 集合框架[笔记+参考代码] 第一关 编程要求 请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,创建ArrayList集 ...

  8. 计算机图形学第二次上机——旋转的三角形

    计算机图形学第二次上机实验 课程实验报告 写在前面:这是我的图形学上机报告,代码都是自己写的,实测通过,查阅了许多资料,现以链接的形式给出 glut初始化 glutSpecialFunc响应键盘方向控 ...

  9. java编写程序上机实验,《Java程序设计》上机实验

    <<Java程序设计>上机实验>由会员分享,可在线阅读,更多相关<<Java程序设计>上机实验(19页珍藏版)>请在技术文库上搜索. 1.tor的安装及 ...

  10. 【v2.x OGE-example 第二章(第二节) 修改器的使用】

    2019独角兽企业重金招聘Python工程师标准>>> [v2.x OGE-example 第二章(第二节) 修改器的使用] 1. 位置:Modifier_example --> ...

最新文章

  1. 如何给页面加上loding_如何给片头添加字幕?视频剪辑大神们都这样玩
  2. 微生物组核心OTU鉴定usearch otutab_core
  3. JQuery中$.ajax()分享
  4. servlet中的session不一定会被创建
  5. spark sql 查看分区_Spark 3.0 中七个必须知道的 SQL 性能优化
  6. PSSM特征-从生成到处理
  7. 卷积神经网络只是一种全连接神经网络的特殊情况
  8. 没有实现类,MyBatis 的方法是怎么执行的?
  9. mysql 不要统计null_浅谈为什么Mysql数据库尽量避免NULL
  10. templates(0.1)
  11. 一份关于机器学习端到端学习指南
  12. 搜索——滑雪(poj1088)
  13. QueryDict对象
  14. PowerDesigner(四)-业务处理模型
  15. Mybatis(2)——Mapper映射文件
  16. 不足300的游戏蓝牙耳机靠谱吗?五款高人气蓝牙耳机测评
  17. hackerrank答案
  18. 显示器不亮电源灯闪_台式电脑显示屏不亮指示灯一直闪烁
  19. word转03版本公式变成图片_word2013公式编辑器_Word 2013保存的时候突然发现公式变成图片怎么办?_word文档打字的时候...
  20. 2022年安全员-A证考题模拟考试平台操作

热门文章

  1. 电脑商城-02-注册
  2. 微信小程序模板消息测试- formId 的获取
  3. Vmware安装Ubuntu16.0.4出现Assuming drive cache: write through和1920X1080分辨率调节问题
  4. DUTOJ-1013: 小q与面试题
  5. 嵌入式开发 学习指导
  6. JS实现:纵向表格,且可在当前行下方添加一行
  7. 微信小程序getUserProfile,获取头像和昵称实现登录
  8. 传奇人形怪爆率怎么设置?人形怪增加教程
  9. 【073】我的wifi卡片-分享wifi密码一扫就好
  10. java计算机毕业设计html5健身房信息管理系统源码+数据库+系统+lw文档