1.有理数类的代码

package R1;

public class Rational{

private int numerator;//分子

private int denominator;//分母

public int getNumerator() //获取分子

{

return numerator;

}

public int getDenominator()//获取分母

{

return denominator;

}

public Rational() {//无参构造函数

this(0,1);

}

public Rational(int numerator,int denominator)//构造函数

{

int gcd=gcd(numerator,denominator);

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

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

}

private static int gcd(int numerator,int denominator)//求最大公约数

{

int n1=Math.abs(numerator);

int n2=Math.abs(denominator);

int tmp;

while (n2 != 0) {

tmp = n1 % n2;

n1 = n2;

n2 = tmp;

}

return n1;

}

public Rational add(Rational secondRational)//加法

{

int n=this.numerator*secondRational.getDenominator()+this.denominator*secondRational.getNumerator();

int d=this.denominator*secondRational.getDenominator();

return new Rational(n,d);

}

public Rational subtract(Rational secondRational)//减法

{

int n=this.numerator*secondRational.getDenominator()-this.denominator*secondRational.getNumerator();

int d=this.denominator*secondRational.getDenominator();

return new Rational(n,d);

}

public Rational multiply(Rational secondRational)//乘法

{

int n=this.numerator*secondRational.getNumerator();

int d=this.denominator*secondRational.getDenominator();

return new Rational(n,d);

}

public Rational divide(Rational secondRational)//除法

{

int n=this.numerator*secondRational.getDenominator();

int d=this.denominator*secondRational.getNumerator();

return new Rational(n,d);

}

public boolean equals(Object secondRational){//判断是否相等

if((this.subtract((Rational)(secondRational))).getNumerator()==0){

return true;

}

else return false;

}

public int compare(Rational secondRational)//比较大小

{

if (this.subtract(secondRational).getNumerator()>0)

return 1;

else if (this.subtract(secondRational).getNumerator()==0)

return 0;

else

return -1;

}

public String toString()//转换为string类型

{

if (this.denominator==1)

{

return this.numerator+"";

}else{

return this.numerator+"/"+this.denominator;

}

}

public int intValue() //将Rational转换为int型

{

return (int)doubleValue();

}

public long longValue() //将Rational转换为long型

{

return (long)doubleValue();

}

public float floatValue() //将Rational转换为float型

{

return (float)doubleValue();

}

public double doubleValue() //将Rational转换为double型

{

return this.numerator*1.0/this.denominator;

}

}

2.测试的代码

package R1;

import R1.Rational;

public class Main {

public static void main(String[] args) {

Rational x=new Rational(5,6);

Rational y=new Rational(2,3);

System.out.println("有理数的分数形式:"+x.toString());//输出x的分数形式

System.out.println("有理数相减得:"+y.toString());//输出y的分数形式

System.out.println("两有理数相加得:"+x.add(y));//输出两分数相加的结果

System.out.println("两有理数相减得:"+x.subtract(y));//输出两分数相减的结果

System.out.println("两有理数相乘得:"+x.multiply(y));//输出两分数相乘的结果

System.out.println("两有理数相除得:"+x.divide(y));//输出两分数相除的结果

System.out.println("两有理数是否相等:"+x.equals(y));//判断两分数是否相等

System.out.println("两有理数的大小关系:"+x.compare(y));//比较两分数大小

}

}

运行结果截图

3.描述怎么与c语言的有理数代码相比较,为什么你设计的类更加面向对象?

c语言更加的面向过程,需要考虑写什么样的函数来完成它,而Java更多的是对类的编写,很多都是直接调用即可,因此Java更加面向对象。

4.别人如何复用你的代码?

虽然别人编写的是不同包的类,但是只要导入自己编写的有理数类的包,就可以复用我的代码了。

5.别人的代码是否依赖你的有理数类的属性?当你的有理数类的属性修改时,是否会影响他人调用你有理数类的代码?

别人的代码是依赖于我的有理数类的属性,但是我的有理数类的属性为private型,所以不会影响我有理数类的代码。

6.有理数类的public方法是否设置合适?为什么有的方法设置为private?

合适,因为有的方法只能运用在类中,不能随便更改,保证数据的安全性,而有的方法希望可以被使用,因此就通过public方法来访问。

java生成有理数_Java 有理数设计相关推荐

  1. java 生成随机数_Java 生成随机数的 N 种方法

    原标题:Java 生成随机数的 N 种方法 www.baeldung.com/java-generating-random-numbers 1.引言 本文将探讨用 Java 生成随机数的不同方法. 2 ...

  2. java闹钟程序设计_JAVA课程设计_闹钟的设计与实现项目-报告_附源代码.doc

    JAVA课程设计_闹钟的设计与实现项目-报告_附源代码 第2章 MACROBUTTON AcceptAllChangesInDoc [双击此处键入1级标题] PAGE 2 - PAGE 1 - .. ...

  3. java 密码生成器_Java课程设计-随机密码生成器

    1.团队课程设计博客链接 2.个人负责模板 设计程序运行界面,数据的输入,判断数据输入类型的错误,判断密码类型是否选择. 3.自己的代码提交记录截图 4自己负责模块或任务详细说明 (一)总体设计 1. ...

  4. java软件架构设计方案_Java软件架构设计慨论

    开始之初的架构设计决定着软件产品的生死存亡."好的开始相当于成功一半". 开始的架构设计也是最难的,需要调研同类产品的情况以及技术特征,了解当前世界上对这种产品所能提供的理论支持和 ...

  5. java 生成缩略图_Java实现等比例缩略图

    1.简介:Web应用为上传图片生成缩略图是常见的基本功能,通过缩略图生成提高了信息浏览时的性能,在保证用户使用体验的同时减少了数据传输量. 2.实现图片等比例缩略图生成,方式及相关工具介绍: (1)T ...

  6. java生成密码_java生成密码生成 | 学步园

    一.根据当前日期生成MD5加密密码 package com.test; import java.security.MessageDigest; import java.text.SimpleDateF ...

  7. java 坦克大战_java课程设计之坦克大战

    本文实例为大家分享了java坦克大战的具体代码,供大家参考,具体内容如下 环境要求: 操作系统:Windows 10 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 功能提示 ...

  8. java 生成拼音_java工具-常用汉语转拼音库Pinyin4j 、tinypinyin、JPinyin

    Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换,拼音输出格式可以定制,在项目中经常会遇到需求用户输入汉字后转换为拼音的场景,这时候Pinyin4j就可以派上用场 有自己私服的可以 ...

  9. java生成条码_Java生成商品条形码

    之前没有使用过这个,现在使用JBarcode生成商品条形码,工作之前的准备工作: Eclipse: Eclipse Java EE IDE for Web Developers. Version: H ...

  10. java atm柜机_java课程设计-ATM柜机模拟程序.doc

    java课程设计-ATM柜机模拟程序 课程设计(大作业)报告课程名称:面向对象程序设计课程设计 设计题目:ATM柜员机模拟程序 院 系:信息技术学院 班 级: 设 计 者: 学 号: 指导教师: 设计 ...

最新文章

  1. java中c/s模式传送数据
  2. 电气工程师学python_Python 在电气工程及其自动化上有哪些应用?
  3. 使用AXIS开发Web Service的示例
  4. 转:谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
  5. Hibernate关联关系映射-----单向一对一映射配置
  6. android中tools的含义及用法
  7. CF1228——记一次和紫名失之交臂的CF
  8. 中国生产力促进中心”十四五”规划与发展规模分析报告2022~2028年
  9. 实现京东商城地址选择效果(效果还挺一致的)
  10. Siggraph三角网格变形之拉普拉斯变换
  11. mysql查询一天内,一周,一个月内的消费记录
  12. 人们已经离不开5G了,商用三年半,中国5G发展迈向新征程,产业发展全面提速!
  13. 字节跳动头条2022测试开发岗 3+1 面经+经验分享(收到offer,入职月薪30K)
  14. 超详细Netty入门
  15. tensor如何实现转置_pytorch tensor 变换
  16. Tekton 的供应链安全工具 Chains
  17. 运维工程师使用的运维平台和工具包括:
  18. 搭建指标体系的底层逻辑
  19. 怎么在应用中实现自助报表功能?
  20. 2020 最受 IT 公司欢迎的 30 款开源软件

热门文章

  1. 【计算机网络】-- 动态分配信道:随机访问介质访问控制(ALOHA协议、CSMA协议、CSMA/CD协议、CSMA/CA协议)
  2. 基于x86汇编的飞机大战
  3. 使用python裁剪图片
  4. 常识推理问答相关最新研究进展
  5. 双光耦开关电源电路图_几种常见开关电源电路图
  6. 模拟摄像头和网络摄像头_没有网络摄像头没问题
  7. SARS-CoV2_ARTIC_Illumina新冠病毒分型和突变分析
  8. 【斯坦福大学公开课CS224W——图机器学习】二、图机器学习中的传统方法(2)
  9. 高效能人士的七个习惯——由内而外全面造就自己
  10. Python 识别图片中表格