用java设计一个分数类,对分数进行简单的算术运算

题目要求

设计一个分数类,分数的分子和分母用两个整型数表示,类中定义方法对分数进行加,减,乘,除运算。定义分数类对象,运算并输出运算结果。

要求分析

首先这道题考察的是对java类和方法的运用。
1,定义一个Grade类,作为分数类,定义六个整型数分别存放两个分数的分子和分母与结果分数的分子和分母。

    int numerator1,denominator1;    //第一个分数的分子,分母int numerator2,denominator2;    //第二个分数的分子,分母int numerator3,denominator3;

2,构造方法,便于测试,将两个分数输入。

    public Grade(int numerator1,int denominator1,int numerator2,int denominator2){this.numerator1 = numerator1;this.denominator1 = denominator1;this.numerator2 = numerator2;this.denominator2 = denominator2;}

3,接下来便是对两个分数进行运算,可以定义一个方法,输入需要的运算符(我是初学java,如何输入并识别±*/,不懂,所以可是事先将运算符声明,如用1234或者add,minus,ride和divide表示)
然后通过switch进行判断分别操作,而接下来便发现了另一个比较麻烦的事,那便是运算后的结果还需化简,这个每种运算都必不可缺,所以化简代码可以放在switch外面或者干脆在定义一个方法,每一个case中调用这个方法对结果经行化简。

化简部分方法代码

    public int Factor(int a,int b){int factor = 1;if (a < b){   //让b小于aint temp = b;b = a;a = temp;}for(int i = b;i > 1;i--){if (a % i == 0 && b % i == 0){factor = i;break;}}return factor;}

然后在调试时有发现一个问题,在减法中结果可能为负或者是0,这便需要在减法中再次定义一个变量存放符号(说白了就是再int一个t,如果原结果分子s小于零,t=-s,同理大于零)

运算部分代码

    public void Operation(String operation){int n,m,p,q,r = 1,s,t = 0;n = numerator1 * numerator2;m = denominator1 * denominator2;p = denominator1 * numerator2;q = denominator2 * numerator1;switch(operation){case "add":    //加r = p + q;s = Factor(r,m);denominator3 = m / s;numerator3 = r / s;break;case "minus":   //减r = q - p;if(r > 0){t = r;}else if(r == 0){denominator3 = 0;numerator3 = 0;break;}else if(r < 0){t = -r;}s = Factor(t,m);denominator3 = m / s;numerator3 = t / s;break;case "ride":    //乘s = Factor(n,m);denominator3 = m / s;numerator3 = n / s;break;case "divide":     //除s = Factor(p,q);denominator3 = p / s;numerator3 = q / s;break;default:System.out.println("输入算法错误");break;}System.out.print(numerator1 + "/" + denominator1);System.out.print(" " + operation + " ");System.out.print(numerator2 + "/" + denominator2);System.out.print(" = ");//这一堆判断,主要用于减法,结果存在等于0和小于零的情况。if(numerator3 == denominator3 && r != 0){System.out.println("1");}else if(numerator3 == denominator3 && r == 0){System.out.println("0");}else if(r < 0){System.out.println("-" + numerator3 + "/" + denominator3);}else if(r > 0){System.out.println(numerator3 + "/" + denominator3);}}

然后重新定义一个GradeText测试类,对上述分数类进行测试

public class GreadText {public static void main(String args[]){// add: + ,minus: - ,ride: * ,divide: / .Grade p1 = new Grade(5,4,3,2);p1.Operation("add");p1.Operation("minus");p1.Operation("ride");p1.Operation("divide");}
}

运行结果如下:

这便是这道题的一种思路,可以在这种思路下进行修改,将功能完善优化一下。

java编程:对两个分数进行简单的算术运算相关推荐

  1. java 截取指定字母 重复_用JAVA编程获取两个指定字符串中的最大相同子串

    /** * 编程获取两个指定字符串中的最大相同子串 * 如:str1="asdafghjka", str2="aaasdfg" 他们的最大子串为"as ...

  2. 7-12 编程实现两个分数相加

    输入两个分数,例如3/4+1/2,输出3/4+1/2=5/4. 运行程序时,如下图所示: 输入样例1: 3/4+1/2 结尾无空行 输入样例2: 1/6+1/2 结尾无空行 输出样例1: 3/4+1/ ...

  3. 【大数据开发】SparkCore——Spark作业执行流程、RDD编程的两种方式、简单算子

    文章目录 一.Spark作业执行流程(重点) 二.RDD编程 2.1创建RDD的⼆种⽅式: 2.2Transformation算⼦ 2.3Action算子 三.简单算子(必须掌握) 3.1 map.m ...

  4. java 实验报告技术路线,Java编程的两条技术路线

    第 30卷 第 3期 2013年 9月 黑 龙 江 气 象 HEILONGJIANG METEOKOLOGY VoI_30 No.3 Sept.2013 文章编号 :1002-252X(2013)03 ...

  5. java编程-计算两个坐标点之间的距离

    设计一个MyPoint类,表示一个具有x坐标和y坐标的点 1.需求分析 •两个私有成员变量x和y表示坐标值: •成员变量x和y的访问器和修改器 •无参构造方法创建点(0,0): •一个有参构造方法,根 ...

  6. LeetCode刷题Java——88.合并两个有序数组(简单)

    题目 给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目. 请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列. ...

  7. c语言编程实现两个分数相加,C语言分数相加

    完整的C程序: #include "stdio.h" typedef struct { int numerator; int denominator; } Fraction; in ...

  8. Java编程答题游戏

    今天我们来用Java编程一个两位数加法运算游戏,程序能实现判断对错.加分.减少机会(每答错一题,五次结束) 下面是程序: package Number; import java.util.Scanne ...

  9. 一些简单的java编程题(2) ————古典问题(兔子问题)

    版权声明: 本文为博主原创文章,未经博主允许不得转载. /* (程序头部注释开始) 版权声明:保留个人权利. 如程序有不当之处,敬请指正.* 文件名称: <一些简单的java编程题(2) --- ...

  10. 动态生成word文档原来如此简单!Aspose.Words助力以Java编程方式创建丰富的Word文档

    近年来,Word文档的动态生成已成为组成报告,报价,发票和其他类型文档的流行功能.各种制造公司都基于数据库中存储的数据生成发票.在这种情况下,文档自动化可以节省手动文档创建过程中所需的时间,精力和资源 ...

最新文章

  1. MikuMikuDance 6 菜单汉化补丁
  2. 清华博士接亲被要求现场写代码,5 分钟做出一颗爱心
  3. html native code is rendered from xml configuration
  4. 小程序引用其他页面js_来聊聊小程序页面之间如何通信
  5. toj 4609 Internal Rate of Return
  6. 2020远程面试几家公司后,从阿里、美团、携程带回来的面试题及文档
  7. 马云刘强东隔空互怼,美团外卖大范围故障,苹果系统漏洞百出 | 一周业界事
  8. 【C/C++】sizeof(结构体)的计算
  9. 背景建模算法比较与ViBe算法论文解读与python代码
  10. CRACK秘籍之爆破
  11. html+css常用代码(前端必备)
  12. 智能配电房综合监控系统的探讨
  13. 【原创--学习整理】学习bat和dos的相关资料整理--汇总
  14. BCD码和ASCII码的相互转换
  15. 全球及中国冶金工业市场产量分析及投资战略决策报告2021版
  16. Unity 按住A键更改鼠标光标样式
  17. 2023学年持IB成绩申请NTU入学流程指南
  18. 【韧性设计】韧性设计模式:重试、回退、超时、断路器
  19. Win7系统不同程序无法同时播放声音是怎么回事?
  20. 深入浅出的分析 TreeMap

热门文章

  1. 赛码网刷题记录acmcoder
  2. linux 内核回调,Linux 内核通知链随笔【下】
  3. THUOCL:清华大学开放中文词库
  4. 魔兽 怎么查服务器在线人数,网易魔兽世界人口普查查看
  5. Linux删除所有文件之后的恢复快照恢复
  6. 符合W3C的网站的开发模型和必要性的探讨(一)
  7. 【深入理解数据库原理】原理
  8. 关于WIN10开机自动开启小键盘解决方案
  9. 自动化测试的思考及其工具的设计
  10. 消费者京东自营买到假茅台 茅台鉴定报告称确属假冒