要实现Rational类的加减乘除,要实现其可比较性,要覆盖toString()方法,要实现不同数据类型的转换等。

package chapter14;

public class Rational extends Number implements Comparable {

private long numerator=0;

private long denominator=1;

public Rational(){

this(0,1);

}

public Rational(long numerator, long denominator) {

// TODO Auto-generated constructor stub

long gcd=gcd(numerator,denominator);

this.numerator=((denominator>0)?1:-1)*numerator/gcd;

this.denominator=Math.abs(denominator)/gcd;

}

private static long gcd(long n, long d) {

// TODO Auto-generated method stub

long n1=Math.abs(n);

long n2=Math.abs(d);

int gcd=1;

for(int k=1;k<=n1&&k<=n2;k++){

if(n1%k==0&&n2%k==0)

gcd=k;

}

return gcd;

}

public long getNumerator(){

return numerator;

}

public long getDenominator(){

return denominator;

}

public Rational add(Rational secondRational){

long n=numerator*secondRational.getDenominator()+

denominator*secondRational.getNumerator();

long d=denominator*secondRational.getDenominator();

return new Rational(n,d);

}

public Rational subtract(Rational secondRational){

long n=numerator*secondRational.getDenominator()-

denominator*secondRational.getNumerator();

long d=denominator*secondRational.getDenominator();

return new Rational(n,d);

}

public Rational multiply(Rational sR){

long n=numerator*sR.getNumerator();

long d=denominator*sR.getDenominator();

return new Rational(n,d);

}

public Rational divide(Rational sR){

long n=numerator*sR.denominator;

long d=denominator*sR.numerator;

return new Rational(n,d);

}

public String toString(){

if(denominator==1)

return numerator+"";

else

return numerator+"/"+denominator;

}

public boolean equals(Object parm1){

if((this.subtract((Rational)(parm1))).getNumerator()==0)

return true;

else

return false;

}

@Override

public int compareTo(Object o) {

// TODO Auto-generated method stub

if((this.subtract((Rational)o)).getNumerator()>0)

return 1;

else if((this.subtract((Rational)o)).getNumerator()<0)

return -1;

else

return 0;

}

@Override

public int intValue() {

// TODO Auto-generated method stub

return (int)doubleValue();

}

@Override

public long longValue() {

// TODO Auto-generated method stub

return (long)doubleValue();

}

@Override

public float floatValue() {

// TODO Auto-generated method stub

return (float)doubleValue();

}

@Override

public double doubleValue() {

// TODO Auto-generated method stub

return numerator*1.0/denominator;

}

}

有理数封装在Rational对象中。在机器内部,有理数总表示为它的最简形式,分子决定有理数的符号,分母总为正数。

gcd()方法是私有静态的。

Object类中的toString方法和equals方法在Rational类中被覆盖。toString()方法以numerator/denominator的形式返回一个Rational对象的字符串表示。

中国MOOC&lowbar;面向对象程序设计——Java语言&lowbar;第1周 类与对象&lowbar;1分数

第1周编程题 查看帮助 返回   我们在题目说明中给出了一部分代码,你需要在这部分代码的基础上,按照题目说明编写代码,然后将两部分代码一起提交. 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨 ...

中国MOOC&lowbar;面向对象程序设计——Java语言&lowbar;第1周 类与对象

第1周编程题 查看帮助 返回   我们在题目说明中给出了一部分代码,你需要在这部分代码的基础上,按照题目说明编写代码,然后将两部分代码一起提交. 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨 ...

Core Java 总结(字符和字符串类问题)

所有代码均在本地编译运行测试,环境为 Windows7 32位机器 + eclipse Mars.2 Release (4.5.2) 2016-10-17 整理 字符,字符串类问题 正则表达式问题 J ...

一个Java文件至多包含一个公共类

编写一个java源文件时,该源文件又称为编译单元.一个java文件可以包含多个类,但至多包含一个公共类,作为编译时该java文件的公用接口,公共类的名字和源文件的名字要相同,源文件名字的格式为[公共类 ...

Java中是否可以调用一个类中的main方法?

前几天面试的时候,被问到在Java中是否可以调用一个类中的main方法?回来测试了下,答案是可以!代码如下: main1中调用main2的主方法 package org.fiu.test; impor ...

【实战Java高并发程序设计 1】Java中的指针:Unsafe类

是第4章的几点. 如果你对技术有着不折不挠的追求,应该还会特别在意incrementAndGet() 方法中compareAndSet()的实现.现在,就让我 ...

Effective java笔记(三),类与接口

类与接口是Java语言的核心,设计出更加有用.健壮和灵活的类与接口很重要. 13.使类和成员的可访问性最小化 设计良好的模块会隐藏起所有的实现细节,仅使用API与其他模块进行通信.这个概念称为信息隐藏 ...

关于java中接口定义常量和类定义常量的区别

/** * * @author YZJ * @Description java中定义常量的最佳方法 */ public final class Contants{ /** * @Description ...

Atitit java的异常exception 结构Throwable类

Atitit java的异常exception 结构Throwable类 1.1. Throwable类 2.StackTrace栈轨迹1 1.2. 3.cause因由1 1.3. 4.Suppres ...

随机推荐

ABP Zero示例项目登录报错&OpenCurlyDoubleQuote;Empty or invalid anti forgery header token&period;”问题解决

ABP Zero项目,登录时出现如图"Empty or invalid anti forgery header token."错误提示的解决方法: 在 WebModule.cs的P ...

逐行扫描型Memory LCD显存管理与emWin移植

因为Memory LCD 的特性,不能设置像素坐标,只能用缓存整体刷新. 所以对于Memory LCD来说,emWin移植仅与打点函数有关,这里用Sharp Memory LCD(ls013b7dh0 ...

BZOJ 2080&colon; &lbrack;Poi2010&rsqb;Railway 双栈排序

2080: [Poi2010]Railway Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 140  Solved: 35[Submit][Statu ...

《JAVA NIO》读书笔记

第一章 简介 第二章 缓冲区 第三章  channel

简单3d RPG游戏 之 005 选择敌人

选择一个敌人,按ctrl+d,复制出3个,调整一下它们的位置,不重叠,修改Tag为Enemy,禁用EnemyAI. 创建Targetting脚本,绑定到Player玩家对象 public class ...

suse系统卸载数据库实例

1.停止数据库: 2.执行以下命令: find $ORACLE_BASE/* -name '*[Tt][Ee][Ss][Tt]*'  其中TEST为数据库的实例名: 删除存在的文件: 3.删除/etc ...

Oracle字符集查看

Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.它使数据库工具,错误消息,排序次序,日期 ...

【Java】 实现一个简单文件浏览器(2)

接着上篇文章 接下来说下程序右侧的文件内容表格如何实现 FileTable类: FileTable基础于JTable类,构造函数里用setDefaultRenderer设置每行默认的渲染器为FileT ...

C&num;方法参数--值参数,引用参数,输出参数

值参数: 使用值参数,通过复制实参的值到形参的方式,把数据传递到方法,方法被调用的时候,系统做如下操作: 在栈中为形参分配空间: 复制实参到形参. 注意:一个值参数的实参不一定是变量,它可以是任何能够 ...

Mathematik

Ausdruck auf Deutsch Lösen Problem der Abteilung. 求导. Die Abteilung von 3x ist 3. 3x的导数是3 Lösen Prob ...

设计一个分数类java_Java 有理数类 分数类 Rational类的设计与实现相关推荐

  1. 设计一个Shape接口和它的两个实现类Square和Circle

    设计一个Shape接口和它的两个实现类Square和Circle. (1)Shape接口中有一个抽象方法area(),方法接收有一个double类型的参数,返回一个double类型的结果. inter ...

  2. 设计一个扩展自抽象类geometricobject的新的triangle类_如何进行代码抽象设计?

    如何写好一段代码?直接CRUD.if-else.for.一个大方法等实现,从完成任务的角度来说没任何问题,但是会遇到一些问题,例如:后续写个新逻辑又得重新开发,而且代码相似度很高:想添加一个额外的功能 ...

  3. 如何设计一个风控实验?以度小满风控实验平台架构设计为例

    导读:大数据风控在互联网金融领域的应用已相对成熟,现在大多金融服务都已可线上进行,因此各个方面的风险控制更加信息化.风控系统的建立就是依赖于数据的积累做规则与分析,为风险控制提供更好的技术手段验证,而 ...

  4. 设计一个简单分页存储管理系统_【系统架构】如何设计一个简单灵活的收银系统?看这里!(1)...

    在电商项目中,收银系统是一个不可或缺的功能,因为你不仅要通过它来进行收款.退款,而且也要通过它进行财务的对账.报税等.因此,如何设计一个简单灵活的收银系统,对于开发电商项目来说非常重要. 那如何设计一 ...

  5. 设计一个扩展自抽象类geometricobject的新的triangle类_C++ 接口(抽象类)

    C++ 接口(抽象类) 接口描述了类的行为和功能,而不需要完成类的特定实现. C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念. 如果类中至 ...

  6. 设计一个扩展自抽象类geometricobject的新的triangle类_面向对象设计原则之开放封闭原则(开闭原则OCP)...

    (1) 定义 一个软件实体(类.模块.函数等),对于扩展是开放的,对于更改是封闭的. 对于扩展是开放的:这意味着模块的行为是可以扩展的.当应用的需求发生改变时,我们可以对模块进行扩展,比如增加新的类或 ...

  7. java教学楼的属性_java设计一个父类建筑物building,由它派生出教学楼类classroom,然后采用一些数据进行测试....

    public class Building { public String bname;//建筑物名称 public int floors;//代表总层数 public double area;//代 ...

  8. sqlite工具类 java_Java之泛型、集合工具类

    集合工具类 在我们讲完常用的基本集合后,我们就要介绍下位于java.util包下的collections类,注意:我们之前的collection是集合的接口,而collections是一个类.coll ...

  9. se 类java_Java SE 9:可选的类改进

    se 类java 发表简要目录: (Post Brief Table of Content:) Introduction介绍 Java SE 8: Optional Class BasicsJava ...

最新文章

  1. hdu 4366 Card Collector (容斥原理)
  2. SAP MM 物料主数据MRP2 视图’Minimum Lot Size’字段
  3. Elasticsearch CURL命令
  4. [mybatis]Configuration XML_databaseidProvider
  5. Asterisk文件目录
  6. Confluence 6 数据中心的 SAML 单点登录最佳实践和故障排除
  7. DSP5509项目之用FFT识别钢琴音调(5)之开始傅里叶变换
  8. 未来的经销商还有哪些生意能做?
  9. 详解之-js闭包的用途
  10. radiogroup多选_【RadioGroup】实现单选并获得所选项值 | 学步园
  11. 域客户统一关闭UAC
  12. MDK5中F103C8T6的RCC时钟配置时指向RCC_AHB1PeriphClockCmd但报错identifier “RCC_AHB1Periph_GPIOB is undefined的解决
  13. 从“制造”之城,到“智造”标杆,长沙何以站上发展新高地?
  14. U盘分区了怎么恢复?详细演示两个方法
  15. 欧姆龙服务器数码管不显示问题,数显仪表常见故障的原理分析以及解决方案
  16. 机器学习导论——机器学习三要素
  17. 中科院大牛博士是如何进行文献检索和阅读的(好习惯受益终生)
  18. Python视觉摄像头检测有趣项目之机器学习和概率论重点概念分析重要(三)(重点)
  19. 【Android】Android Studio安装步骤图解
  20. Spring Framework与JDK版本对应表

热门文章

  1. mouseenter事件java_javaScript事件(五)事件类型之鼠标事件
  2. 刷脸支付代理收益盈利模式
  3. Redis(二) -- redis.conf详解(redis6)
  4. 江西丰收节直播带货 国稻种芯·中国水稻节:消费季产销两旺
  5. Brainfuck语言入门
  6. 马化腾对短视频志在必得?腾讯又双叒叕发布了一款短视频App
  7. 10个H5页面制作工具
  8. 重启c语言-找出总分最高的学生
  9. 土豆网、六间房等在线视频FLV文件下载方法
  10. Linux I/O编程