用java具体代码实现分数(即有理数)四则运算
来源:互联网 发布:do while java 编辑:程序博客网 时间:2024/05/01 06:09
用java具体代码实现分数(即有理数)四则运算
1,背景
Java老师布置了一个关于有理数运算的题目,因为参考书上有基本代码,所以自己主要是对书上代码做了一点优化,使其用户交互性更加友好以及代码封装性更强
2,说明:
分数也称作有理数,是我们很熟悉的一种数。有时希望程序能对分数进行四则运算,而且两个分数四则运算的结果仍然是分数。下面是具体实现
3,java代码具体实现
3.1 运算类封装
package Rational;import java.util.StringTokenizer;/** * @author sunkun * 分数四则运算 */public class Calculator {int numerator; // 分子int denominator; // 分母Calculator(){}Calculator(int a,int b){if(a == 0){numerator = 0;denominator = 1;}else{setNumeratorAndDenominator(a,b);}}void setNumeratorAndDenominator(int a, int b){ // 设置分子和分母int c = f(Math.abs(a),Math.abs(b)); // 计算最大公约数numerator = a / c;denominator = b / c;if(numerator<0 && denominator<0){numerator = - numerator;denominator = - denominator;}}int getNumerator(){return numerator;}int getDenominator(){return denominator;}int f(int a,int b){ // 求a和b的最大公约数if(a < b){int c = a;a = b;b = c;}int r = a % b;while(r != 0){a = b;b = r;;r = a % b;}return b;}Calculator add(Calculator r){ // 加法运算int a = r.getNumerator();int b = r.getDenominator();int newNumerator = numerator * b + denominator * a;int newDenominator = denominator * b;Calculator result = new Calculator(newNumerator,newDenominator);return result;}Calculator sub(Calculator r){ // 减法运算int a = r.getNumerator();int b = r.getDenominator();int newNumerator = numerator * b - denominator * a;int newDenominator = denominator * b;Calculator result = new Calculator(newNumerator,newDenominator);return result;} Calculator muti(Calculator r){ // 乘法运算int a = r.getNumerator();int b = r.getDenominator();int newNumerator = numerator * a;int newDenominator = denominator * b;Calculator result = new Calculator(newNumerator,newDenominator);return result;}Calculator div(Calculator r){ // 除法运算int a = r.getNumerator();int b = r.getDenominator();int newNumerator = numerator * b;int newDenominator = denominator * a;Calculator result = new Calculator(newNumerator,newDenominator);return result;}// 封装了具体运算,主要为对输入进行转换,对输出封装public static void compute(String data1,String operation,String data2){StringTokenizer fenxi = new StringTokenizer(data1,"/"); int data1_1 = Integer.parseInt(fenxi.nextToken()); int data1_2 = Integer.parseInt(fenxi.nextToken());fenxi = new StringTokenizer(data2,"/"); int data2_1 = Integer.parseInt(fenxi.nextToken()); int data2_2 = Integer.parseInt(fenxi.nextToken()); Calculator r1 = new Calculator(data1_1,data1_2);Calculator r2 = new Calculator(data2_1,data2_2);Calculator result;int a,b;if(operation.equals("+")){ result = r1.add(r2);a = result.getNumerator(); b = result.getDenominator();System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);}if(operation.equals("-")){ result = r1.sub(r2);a = result.getNumerator(); b = result.getDenominator();System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);}if(operation.equals("*")){ result = r1.muti(r2);a = result.getNumerator(); b = result.getDenominator();System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);}if(operation.equals("/")){ result = r1.div(r2);a = result.getNumerator(); b = result.getDenominator();System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);}}}
3.2 测试类
package Rational;import java.util.Scanner;/** * @author sunkun * 为了测试分数四则运算 * */public class TestCal {public static void main(String[] args) {// TODO Auto-generated method stub// 用户输入两分数和运算符Scanner input = new Scanner(System.in);System.out.println("请用户输入第一个分数(格式a/b)");String data1 = input.next();System.out.println("请用户输入要进行运算的运算符(+-*/)");String operation = input.next();System.out.println("请用户输入第二个分数(格式c/d)");String data2 = input.next();// 根据用户输入进行具体运算Calculator cal = new Calculator();System.out.println("运算结果为:");cal.compute(data1, operation, data2);// }}}
4,实验结果
5,备注
如果您有更好的想法或建议,欢迎留言,大家共同学习,相互提高
有理数进一步运算,包括运算功能扩展,分数与小数之间的互转,会写在另一篇博客中。
- 用java具体代码实现分数(即有理数)四则运算
- Java有理数的四则运算
- 分数(有理数)的四则运算PAT1088
- 有理数的四则运算 C、java
- 有理数四则运算
- java小练习(实现分数的四则运算)
- java第二周作业--实现分数的四则运算
- java小练习(实现分数的四则运算)
- 分数四则运算(Java)acm.sdut
- C语言 两个分数的四则运算,用函数调用实现
- PAT Basic 1034. 有理数四则运算(20)(C语言实现)
- 第4章类与对象==有理数的类封装(分数的四则运算)
- 1034. 有理数四则运算
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 1034. 有理数四则运算(20)
- 有理数四则运算(20)
- 快速建立网站
- 总结OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别
- 详解C语言中的const
- C语言算法之背包算法
- 一些比较“挫”的设计
- 用java具体代码实现分数(即有理数)四则运算
- 笔面试中的机试
- ACM学习-POJ-1017-Packets
- hdfs设计要点
- Android控件之GridView探究
- 注册码
- XCode5/Apple LLVM 5.0下使用boost的方法
- 【Git】Git常用命令总结
- Android常用的物理按键及其触发事件