package lianxi1;

//201621123070 陈伟杰

public class Rational {

int numerator; //分子

int denominator; //分母

Rational(int a,int b){

if(a==0){

numerator=0;

denominator=0;

}

else{

setNumeratorAndDenominator(a,b);

}

}

void setNumeratorAndDenominator(int a,int b){

int c=gcd(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 gcd(int a,int b)

{

if(a

{

int c=a;

a=b;

b=c;

}

int r=a%b;

while(r!=0)

{

a=b;

b=r;

r=a%b;

}

return b;

}

Rational add(Rational r)

{

int a=r.getNumerator();

int b=r.getDenominator();

int newNumerator=numerator*b+denominator*a;

int newDenominator=denominator*b;

Rational result=new Rational(newNumerator,newDenominator);

return result;

}

Rational sub(Rational r)

{

int a=r.getNumerator();

int b=r.getDenominator();

int newNumerator=numerator*b-denominator*a;

int newDenominator=denominator*b;

Rational result=new Rational(newNumerator,newDenominator);

return result;

}

Rational muti(Rational r)

{

int a=r.getNumerator();

int b=r.getDenominator();

int newNumerator=numerator*a;

int newDenominator=denominator*b;

Rational result=new Rational(newNumerator,newDenominator);

return result;

}

Rational div(Rational r)

{

int a=r.getNumerator();

int b=r.getDenominator();

int newNumerator=numerator*b;

int newDenominator=denominator*a;

Rational result=new Rational(newNumerator,newDenominator);

return result;

}

}

mport java.util.Scanner;

public class Rational_main {

public static void main(String[] args) {

Scanner in = new Scanner(System.in

);

int Numerator1,Denominator1,Numerator2,Denominator2;

System.out.print("请输入第一个有理数的分子和分母,用空格隔开:");

Numerator1=in.nextInt();

Denominator1=in.nextInt();

System.out.print("请输入第二个有理数的分子和分母,用空格隔开:");

Numerator2=in.nextInt();

Denominator2=in.nextInt();

Rational firstRational=new Rational(Numerator1,Denominator1);

Rational secondRational=new Rational(Numerator2,Denominator2);

//加

Rational resultRational=firstRational.add(secondRational);

int resultNumerator=resultRational.getNumerator();

int resultDenominator=resultRational.getDenominator();

System.out.println(Numerator1+"/"+Denominator1+"+"+Numerator2+"/"+Denominator2+"="+resultNumerator+"/"+resultDenominator);

//减

resultRational=firstRational.sub(secondRational);

resultNumerator=resultRational.getNumerator();

resultDenominator=resultRational.getDenominator();

System.out.println(Numerator1+"/"+Denominator1+"-"+Numerator2+"/"+Denominator2+"="+resultNumerator+"/"+resultDenominator);

//乘

resultRational=firstRational.muti(secondRational);

resultNumerator=resultRational.getNumerator();

resultDenominator=resultRational.getDenominator();

System.out.println(Numerator1+"/"+Denominator1+"*"+Numerator2+"/"+Denominator2+"="+resultNumerator+"/"+resultDenominator);

//除

resultRational=firstRational.div(secondRational);

resultNumerator=resultRational.getNumerator();

resultDenominator=resultRational.getDenominator();

System.out.println(Numerator1+"/"+Denominator1+"/"+Numerator2+"/"+Denominator2+"="+resultNumerator+"/"+resultDenominator);

}

}

一键复制

编辑

Web IDE

原始数据

按行查看

历史

java st_st.java · cwj/java201621123070 - Gitee.com相关推荐

  1. Java 11 – Java飞行记录器

    Java Flight Recorder(JFR)是一个Java分析工具,用于监视和诊断正在运行的Java应用程序,它收集有关正在运行的环境,JVM和Java应用程序的数据,并将记录的数据转储到.jf ...

  2. java unlimited_具有无限参数的Java方法(Java method with unlimited arguments)

    具有无限参数的Java方法(Java method with unlimited arguments) Spring框架使用方法,您可以根据需要传递尽可能多的参数. 我想写一个函数,也可以采取无限量的 ...

  3. 介绍java -cp java -jar的区别

    java -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,window上分号";" java -cp &am ...

  4. 【Java】Java连接Mysql数据库的demo示例

    [Java]Java连接Mysql数据库的demo示例 1.安装mysql数据库 2.下载java-mysql-connector.jar包 3.完成java配置 4.写java代码运行测试 1.安装 ...

  5. java抓取网页标题内容_[Java教程]java 网页页面抓取标题和正文

    [Java教程]java 网页页面抓取标题和正文 0 2014-07-10 09:01:30 import java.io.BufferedReader;import java.io.IOExcept ...

  6. Java基础-Java中的堆内存和离堆内存机制

    Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 转载于:https://www.cnblogs.com/yinzhengjie/p/9 ...

  7. Java 异常java.lang.IllegalArgumentException: Illegal group reference

    Java 异常java.lang.IllegalArgumentException: Illegal group reference 参考文章: (1)Java 异常java.lang.Illegal ...

  8. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  9. 4.6 W 字总结!Java 11—Java 17特性详解

    作者 | 民工哥技术之路 来源 | https://mp.weixin.qq.com/s/SVleHYFQeePNT7q67UoL4Q Java 11 特性详解 基于嵌套的访问控制 与 Java 语言 ...

最新文章

  1. 转:MySQL索引原理及慢查询优化
  2. virtualbox 命令
  3. 机器学习中的度量——字符串距离
  4. leetcode 《简单》 数学部分 Python实现
  5. poi获取段落位置_java poi读取.doc和.docx文件时获取图片与段落的对应关系
  6. 什么是事件的三要素?
  7. 智能优化算法:蜉蝣算法 - 附代码
  8. postfix发送邮件报错:mail for xxxxx.com loops back to myself
  9. 用户中心模块——基于Django框架的天天生鲜电商网站项目系列博客(五)
  10. js获取ip本机地址的方法
  11. i2c电路电平转换电路
  12. Datawhale组队学习周报(第043周)
  13. 厦门大学计算机学院夏令营名单,2016年厦门大学信息科学与技术学院推免生夏令营入营名单...
  14. 视频播放插件AVPro1-插件介绍
  15. 使用Pytorch在StarCraft II 星际争霸2上实现多智能体强化学习算法
  16. mysql 主键 默认索引_mysql 主键和默认 设为索引的规则
  17. 《Vue.js实战》记录
  18. Hyper-V设置多个网口
  19. 公共区域U盘窃取数据
  20. java中lockprocess_java – 使用Processbuilder运行jar无法正常工作

热门文章

  1. DAO层,Service层,Controller层、View层
  2. 2022-2027年中国婴幼儿配方奶粉行业市场全景评估及发展战略规划报告
  3. javascript新窗口打开链接window.open()被阻拦的解决办法
  4. 语文高数英语计算机,江苏专转本高数、英语、计算机、语文复习方法.docx
  5. Ubuntu18.04安装g2o遇到的坑-TARGETS given no ARCHIVE DESTINATION for static library target
  6. vue+element 创建Cron表达式生成器组件 [带最近五次执行时间]
  7. Minix源码解读:Minix总体框架
  8. json学习(pythonj)
  9. centos7安装gparted分区工具
  10. “libgomp.so.1: version `GOMP_4.0' not found” || “libstdc++.so.6: version `CXXABI_1.3.8' not found”错误