一、代码

Rational(有理数)类代码

package Rational;

public class Rational {

private long numerator; //分子

private long denominator;//分母

/*构造无参函数*/

public Rational() {

this(0,1);

}

/*辗转相除法求两数的最大公约数*/

private long gcd(long a,long b) {

if(b==0)

return a;

return gcd(b,a%b);

}

/*构造参数函数*/

public Rational(long a,long b) {

numerator=a;

denominator=b;

long k=gcd(numerator, denominator);

if(k>1) {

numerator/=k;

denominator/=k;

}

}

/*加法运算*/

public Rational myAdd(Rational x) {

return new Rational(numerator*x.getDenominator()+x.getNumerator()*denominator,denominator*x.getDenominator());

}

/*减法运算*/

public Rational mySub(Rational x) {

return new Rational(numerator*x.getDenominator()-x.getNumerator()*denominator,denominator*x.getDenominator());

}

/*乘法运算*/

public Rational myMul(Rational x) {

return new Rational(numerator*x.getNumerator(),denominator*x.getDenominator());

}

/*除法运算*/

public Rational myDiv(Rational x) {

return new Rational(numerator*x.getDenominator(),denominator*x.getNumerator());

}

/*设置分子的值*/

public void setNumerator(long numerator) {

this.numerator = numerator;

}

/*设置分母的值*/

public void setDenominator(long denominator) {

this.denominator = denominator;

}

/*获取分子的值*/

public long getNumerator() {

return numerator;

}

/*获取分母的值*/

public long getDenominator() {

return denominator;

}

/*比较两个有理数是否相等*/

public boolean myEquals(Rational x) {

if((numerator==x.getNumerator())&&(denominator==x.getDenominator()))

return true;

return false;

}

/*比较两个有理数的大小*/

public int myCompare(Rational x) {

if (this.mySub(x).numerator>0)

return 1;

else if(this.mySub(x).numerator==0)

return 0;

else return -1;

}

}

测试代码(main)

import Rational.Rational;

public class Main {

public static void main(String[] args) {

Rational rat1=new Rational(1,2);

Rational rat2=new Rational(3,4);

Rational c;

System.out.println("第一个有理数为:"+rat1.getNumerator()+"/"+rat1.getDenominator());

System.out.println("第二个有理数为:"+rat2.getNumerator()+"/"+rat2.getDenominator());

/*加法运算*/

c=rat1.myAdd(rat2);

System.out.println("两个有理数相加结果为:"+rat1.getNumerator()+"/"+rat1.getDenominator()+"+"+rat2.getNumerator()+"/"+rat2.getDenominator()+"="+c.getNumerator()+"/"+c.getDenominator());

/*减法运算*/

c=rat1.mySub(rat2);

System.out.println("两个有理数相减结果为:"+rat1.getNumerator()+"/"+rat1.getDenominator()+"-"+rat2.getNumerator()+"/"+rat2.getDenominator()+"="+c.getNumerator()+"/"+c.getDenominator());

/*乘法运算*/

c=rat1.myMul(rat2);

System.out.println("两个有理数相乘结果为:"+rat1.getNumerator()+"/"+rat1.getDenominator()+"*"+rat2.getNumerator()+"/"+rat2.getDenominator()+"="+c.getNumerator()+"/"+c.getDenominator());

/*除法运算*/

c=rat1.myDiv(rat2);

System.out.println("两个有理数相除结果为:"+rat1.getNumerator()+"/"+rat1.getDenominator()+"÷"+rat2.getNumerator()+"/"+rat2.getDenominator()+"="+c.getNumerator()+"/"+c.getDenominator());

/*da'xiao运算*/

int k=rat1.myCompare(rat2);

if(k>1)

System.out.println("两个有理数的大小比较结果为:"+rat1.getNumerator()+"/"+rat1.getDenominator()+">"+rat2.getNumerator()+"/"+rat2.getDenominator());

else if (k==0) {

System.out.println("两个有理数的大小比较结果为:"+rat1.getNumerator()+"/"+rat1.getDenominator()+"="+rat2.getNumerator()+"/"+rat2.getDenominator());

}

else

System.out.println("两个有理数的大小比较结果为:"+rat1.getNumerator()+"/"+rat1.getDenominator()+"

}

}

测试结果截图

二、有理数类功能介绍及相关问题回答

1.功能介绍

该自定义的Rational类存放在Rational包里,它可以返回有理数的最简形式,可以对两个有理数进行加、减、乘、除运算,亦可以比较两个有理数的大小,判断两个有理数是否相等。它可以在main函数中通过set对有理数的值进行更改。

2.相关问题

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

A1:c语言的有理数代码多倾向于构造函数来对有理数(对象)的属性进行操作,而用java设计的类方法则是偏向直接面对有理数(对象)进行操作。

Q2:别人如何复用你的代码?

A2:导入我的Rational包即可

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

A3:是的,别人的代码会依赖我的有理数类属性。当我的有理数属性修改时,不会影响他人调用我的有理数代码。因为设计的有理数类中,有理数的属性类型为private型,且在类中给出了setter、getter的方法。

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

A4:在该有理数类的设计中,我已把提供使用的方法设置为了public,而不被别人使用的,设置为了private。如加减乘除的运算,则是可以使用的;而求最大公约数(gcd)只是辅助我完成对有理数类的设计而存在,其被设为private。

java程序设计有理数_Java——有理数类的设计相关推荐

  1. Java程序设计当中包的使用_【学习笔记】 唐大仕—Java程序设计 第4讲 类、包和接口之4.2 类的继承...

    [学习笔记] 唐大仕-Java程序设计 第4讲 类.包和接口之4.2 类的继承 super的使用 1.使用super访问父类的域和方法 注意:正是由于继承,使用this可以访问父类的域和方法.但是有时 ...

  2. 基于Java多线程的打怪升级类游戏设计与开发

    摘要:本文论述了通过JAVA多线程.基于JAVA Swing的GUI图形用户界面设计.IO输入输出流.JDBC技术,实现了游戏系统的UI设计.游戏数据的存储.关卡的设置.用户头像的上传与更改.游戏数据 ...

  3. 专科java程序设计试卷_java程序设计试卷(含答案)

    ----------------密----------------封----------------线----------------- 年级: 层次: 专业: 学号: 姓名: 2015年春季学期 & ...

  4. java实验报告之Employee类的设计

    一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055@qq.com Time of completion:2022.12.20 La ...

  5. java程序设计入门_Java程序设计从入门到精通

    Java程序设计从入门到精通 编辑 锁定 讨论 上传视频 <Java程序设计从入门到精通>是2018年1月电子工业出版社出版的图书,作者是毛雪涛.丁毓峰. 书    名 Java程序设计从 ...

  6. java程序设计题目_Java程序设计习题集(含答案).doc

    目 录 一.判断题2 二.选择题4 三.填空题17 四.写出下列程序完成的功能25 五.写出下面程序的运行结果29 六.使用Java语言编写程序33 七.简答题34 Java程序设计习题集 一.判断题 ...

  7. java scanner 回车_Java Scanner类用法及nextLine()产生的换行符问题实例分析

    本文实例讲述了Java Scanner类用法及nextLine()产生的换行符问题.分享给大家供大家参考,具体如下: 分析理解:Scanner sc = new Scanner(System.in); ...

  8. java异常判断_Java异常类

    异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的异常. ...

  9. java程序设计作业_Java程序设计作业

    北 京 师 范 大 学 网 络 教 育 <JAVA程序设计>作业 本课程作业由两部分组成.第一部分为"客观题部分",由15个选择题组成,每题1分,共15分.第二部分为& ...

  10. java程序设计答案_JAVA程序设计课后练习答案.pdf

    <Java程序设计>课后练习答案 第一章 Java概述 一.选择题 1. ( A )是在Dos命令提示符下编译Java程序的命令,( B )是运行Java 程序的 命令. A. javac ...

最新文章

  1. java sqlldr导入_使用SQL*LOADER将TXT或CSV数据导入ORACLE(转)
  2. 关于CoordinatorLayout的用法——复杂交互的克星
  3. 【MVC】ASP.NET MVC5 使用MiniProfiler 监控MVC性能
  4. android拍照截图组件,Android截图命令screencap与视频录制命令screenrecord(示例代码)...
  5. Oracle_高级功能(3) synonym和database link
  6. html 页面数据显示溢出bug? - 提问篇
  7. 黑客攻防技术宝典Web实战篇第2版—第3章 Web应用程序技术
  8. react redux 简化_Redux 源码解析
  9. vim介绍与一些使用方式
  10. ffmpeg结构体以及函数介绍(二)
  11. Linux下的shell编程(二)BY 四喜三顺
  12. 由有理函数的广义积分引入,谈谈复变函数论中的留数
  13. Eclipse 性能优化
  14. 金山毒霸卸载完后安装360出现蓝屏和软媒魔方安装后出现相互冲突现象
  15. 微信自动跳转默认浏览器 微信扫一扫直接打开外部浏览器
  16. 知乎上看到的关于异步双核的解释
  17. Shell中的感叹号
  18. 考研失败最根本的5个原因!
  19. 06.图像识别与卷积神经网络------《Tensorflow实战Google深度学习框架》笔记
  20. 习题4-9 打印菱形图案(15分)

热门文章

  1. python量化交易书籍推荐_量化交易的几本书籍介绍
  2. unity 打包时 StreamingAssets文件的数目过多
  3. 利用JavaScript在canvas中画一棵树
  4. 《遥远的救世主》遵守客观规律(五)——文化属性
  5. php接入支付宝app支付接口,php支付宝App支付生成预支付订单(统一下单接口)
  6. java ftp 卡死_ftpclient卡死问题
  7. OpenCV笔记之六(4)——图像处理之颜色通道拆分、合并及颜色空间
  8. 前端日常工作中遇到的问题及解决方案
  9. latex 打出罗马数字
  10. 网站建设的一些基本教程操作