java程序设计有理数_Java——有理数类的设计
一、代码
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——有理数类的设计相关推荐
- Java程序设计当中包的使用_【学习笔记】 唐大仕—Java程序设计 第4讲 类、包和接口之4.2 类的继承...
[学习笔记] 唐大仕-Java程序设计 第4讲 类.包和接口之4.2 类的继承 super的使用 1.使用super访问父类的域和方法 注意:正是由于继承,使用this可以访问父类的域和方法.但是有时 ...
- 基于Java多线程的打怪升级类游戏设计与开发
摘要:本文论述了通过JAVA多线程.基于JAVA Swing的GUI图形用户界面设计.IO输入输出流.JDBC技术,实现了游戏系统的UI设计.游戏数据的存储.关卡的设置.用户头像的上传与更改.游戏数据 ...
- 专科java程序设计试卷_java程序设计试卷(含答案)
----------------密----------------封----------------线----------------- 年级: 层次: 专业: 学号: 姓名: 2015年春季学期 & ...
- java实验报告之Employee类的设计
一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055@qq.com Time of completion:2022.12.20 La ...
- java程序设计入门_Java程序设计从入门到精通
Java程序设计从入门到精通 编辑 锁定 讨论 上传视频 <Java程序设计从入门到精通>是2018年1月电子工业出版社出版的图书,作者是毛雪涛.丁毓峰. 书 名 Java程序设计从 ...
- java程序设计题目_Java程序设计习题集(含答案).doc
目 录 一.判断题2 二.选择题4 三.填空题17 四.写出下列程序完成的功能25 五.写出下面程序的运行结果29 六.使用Java语言编写程序33 七.简答题34 Java程序设计习题集 一.判断题 ...
- java scanner 回车_Java Scanner类用法及nextLine()产生的换行符问题实例分析
本文实例讲述了Java Scanner类用法及nextLine()产生的换行符问题.分享给大家供大家参考,具体如下: 分析理解:Scanner sc = new Scanner(System.in); ...
- java异常判断_Java异常类
异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的异常. ...
- java程序设计作业_Java程序设计作业
北 京 师 范 大 学 网 络 教 育 <JAVA程序设计>作业 本课程作业由两部分组成.第一部分为"客观题部分",由15个选择题组成,每题1分,共15分.第二部分为& ...
- java程序设计答案_JAVA程序设计课后练习答案.pdf
<Java程序设计>课后练习答案 第一章 Java概述 一.选择题 1. ( A )是在Dos命令提示符下编译Java程序的命令,( B )是运行Java 程序的 命令. A. javac ...
最新文章
- java sqlldr导入_使用SQL*LOADER将TXT或CSV数据导入ORACLE(转)
- 关于CoordinatorLayout的用法——复杂交互的克星
- 【MVC】ASP.NET MVC5 使用MiniProfiler 监控MVC性能
- android拍照截图组件,Android截图命令screencap与视频录制命令screenrecord(示例代码)...
- Oracle_高级功能(3) synonym和database link
- html 页面数据显示溢出bug? - 提问篇
- 黑客攻防技术宝典Web实战篇第2版—第3章 Web应用程序技术
- react redux 简化_Redux 源码解析
- vim介绍与一些使用方式
- ffmpeg结构体以及函数介绍(二)
- Linux下的shell编程(二)BY 四喜三顺
- 由有理函数的广义积分引入,谈谈复变函数论中的留数
- Eclipse 性能优化
- 金山毒霸卸载完后安装360出现蓝屏和软媒魔方安装后出现相互冲突现象
- 微信自动跳转默认浏览器 微信扫一扫直接打开外部浏览器
- 知乎上看到的关于异步双核的解释
- Shell中的感叹号
- 考研失败最根本的5个原因!
- 06.图像识别与卷积神经网络------《Tensorflow实战Google深度学习框架》笔记
- 习题4-9 打印菱形图案(15分)