设计一个分数类java_Java 有理数类 分数类 Rational类的设计与实现
要实现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_面向对象程序设计——Java语言_第1周 类与对象_1分数
第1周编程题 查看帮助 返回 我们在题目说明中给出了一部分代码,你需要在这部分代码的基础上,按照题目说明编写代码,然后将两部分代码一起提交. 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨 ...
中国MOOC_面向对象程序设计——Java语言_第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示例项目登录报错“Empty or invalid anti forgery header token.”问题解决
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: [Poi2010]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#方法参数--值参数,引用参数,输出参数
值参数: 使用值参数,通过复制实参的值到形参的方式,把数据传递到方法,方法被调用的时候,系统做如下操作: 在栈中为形参分配空间: 复制实参到形参. 注意:一个值参数的实参不一定是变量,它可以是任何能够 ...
Mathematik
Ausdruck auf Deutsch Lösen Problem der Abteilung. 求导. Die Abteilung von 3x ist 3. 3x的导数是3 Lösen Prob ...
设计一个分数类java_Java 有理数类 分数类 Rational类的设计与实现相关推荐
- 设计一个Shape接口和它的两个实现类Square和Circle
设计一个Shape接口和它的两个实现类Square和Circle. (1)Shape接口中有一个抽象方法area(),方法接收有一个double类型的参数,返回一个double类型的结果. inter ...
- 设计一个扩展自抽象类geometricobject的新的triangle类_如何进行代码抽象设计?
如何写好一段代码?直接CRUD.if-else.for.一个大方法等实现,从完成任务的角度来说没任何问题,但是会遇到一些问题,例如:后续写个新逻辑又得重新开发,而且代码相似度很高:想添加一个额外的功能 ...
- 如何设计一个风控实验?以度小满风控实验平台架构设计为例
导读:大数据风控在互联网金融领域的应用已相对成熟,现在大多金融服务都已可线上进行,因此各个方面的风险控制更加信息化.风控系统的建立就是依赖于数据的积累做规则与分析,为风险控制提供更好的技术手段验证,而 ...
- 设计一个简单分页存储管理系统_【系统架构】如何设计一个简单灵活的收银系统?看这里!(1)...
在电商项目中,收银系统是一个不可或缺的功能,因为你不仅要通过它来进行收款.退款,而且也要通过它进行财务的对账.报税等.因此,如何设计一个简单灵活的收银系统,对于开发电商项目来说非常重要. 那如何设计一 ...
- 设计一个扩展自抽象类geometricobject的新的triangle类_C++ 接口(抽象类)
C++ 接口(抽象类) 接口描述了类的行为和功能,而不需要完成类的特定实现. C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念. 如果类中至 ...
- 设计一个扩展自抽象类geometricobject的新的triangle类_面向对象设计原则之开放封闭原则(开闭原则OCP)...
(1) 定义 一个软件实体(类.模块.函数等),对于扩展是开放的,对于更改是封闭的. 对于扩展是开放的:这意味着模块的行为是可以扩展的.当应用的需求发生改变时,我们可以对模块进行扩展,比如增加新的类或 ...
- java教学楼的属性_java设计一个父类建筑物building,由它派生出教学楼类classroom,然后采用一些数据进行测试....
public class Building { public String bname;//建筑物名称 public int floors;//代表总层数 public double area;//代 ...
- sqlite工具类 java_Java之泛型、集合工具类
集合工具类 在我们讲完常用的基本集合后,我们就要介绍下位于java.util包下的collections类,注意:我们之前的collection是集合的接口,而collections是一个类.coll ...
- se 类java_Java SE 9:可选的类改进
se 类java 发表简要目录: (Post Brief Table of Content:) Introduction介绍 Java SE 8: Optional Class BasicsJava ...
最新文章
- hdu 4366 Card Collector (容斥原理)
- SAP MM 物料主数据MRP2 视图’Minimum Lot Size’字段
- Elasticsearch CURL命令
- [mybatis]Configuration XML_databaseidProvider
- Asterisk文件目录
- Confluence 6 数据中心的 SAML 单点登录最佳实践和故障排除
- DSP5509项目之用FFT识别钢琴音调(5)之开始傅里叶变换
- 未来的经销商还有哪些生意能做?
- 详解之-js闭包的用途
- radiogroup多选_【RadioGroup】实现单选并获得所选项值 | 学步园
- 域客户统一关闭UAC
- MDK5中F103C8T6的RCC时钟配置时指向RCC_AHB1PeriphClockCmd但报错identifier “RCC_AHB1Periph_GPIOB is undefined的解决
- 从“制造”之城,到“智造”标杆,长沙何以站上发展新高地?
- U盘分区了怎么恢复?详细演示两个方法
- 欧姆龙服务器数码管不显示问题,数显仪表常见故障的原理分析以及解决方案
- 机器学习导论——机器学习三要素
- 中科院大牛博士是如何进行文献检索和阅读的(好习惯受益终生)
- Python视觉摄像头检测有趣项目之机器学习和概率论重点概念分析重要(三)(重点)
- 【Android】Android Studio安装步骤图解
- Spring Framework与JDK版本对应表