题目内容:

设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母。

这个类的构造函数是:

Fraction(int a, int b)

构造一个a/b的分数。

这个类要提供以下的功能:

double toDouble();

将分数转换为double

Fraction plus(Fraction r);

将自己的分数和r的分数相加,产生一个新的Fraction的对象。注意小学四年级学过两个分数如何相加的哈。

Fraction multiply(Fraction r);

将自己的分数和r的分数相乘,产生一个新的Fraction的对象。

void print();

将自己以“分子/分母”的形式输出到标准输出,并带有回车换行。如果分数是1/1,应该输出1。当分子大于分母时,不需要提出整数部分,即31/30是一个正确的输出。

注意,在创建和做完运算后应该化简分数为最简形式。如2/4应该被化简为1/2。

你写的类要和以下的代码放在一起,并请勿修改这个代码:

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

Fraction a = new Fraction(in.nextInt(), in.nextInt());

Fraction b = new Fraction(in.nextInt(),in.nextInt());

a.print();

b.print();

a.plus(b).print();

a.multiply(b).plus(new Fraction(5,6)).print();

a.print();

b.print();

in.close();

}

}

注意,你的类的定义应该这样开始:

class Fraction {

也就是说,在你的类的class前面不要有public。

输入格式:

程序运行时会得到四个数字,分别构成两个分数,依次是分子和分母。

输出格式:

输出一些算式。这些输入和输出都是由Main类的代码完成的,你的代码不要做输入和输出。

输入样例:

2 4 1 3

输出样例:

1/2

1/3

5/6

1

1/2

1/3

源码展示:

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

Fraction a = new Fraction(in.nextInt(), in.nextInt());

Fraction b = new Fraction(in.nextInt(),in.nextInt());

a.print();

b.print();

a.plus(b).print();

a.multiply(b).plus(new Fraction(5,6)).print();

a.print();

b.print();

in.close();

}

}

class Fraction {

private int a_;// 分子

private int b_;// 分母

public Fraction(int a, int b) {// 构造函数

while (b % a == 0 && a != 1) {// 化简分数为最简形式

b /= a;

a /= a;

}

a_ = a;

b_ = b;

}

public int getA() {// 得到分子

return a_;

}

public int getB() {// 得到分母

return b_;

}

public Fraction plus(Fraction r) {// 将自己的分数和r的分数相加,产生一个新的Fraction的对象。注意小学四年级学过两个分数如何相加的哈。

int a_1 = a_;// 第一个分子

int b_1 = b_;// 第一个分母

int a_2 = r.getA();// 第二个分子

int b_2 = r.getB();// 第二个分母

int c = b_1 * b_2;

int gongBeiShu = 0;

if (b_1 < b_2) {

int temp = b_1;

b_1 = b_2;

b_2 = temp;

}

while (true) {

int temp = b_1 % b_2;

if (temp == 0) {

gongBeiShu = c / b_2;

break;

} else {

b_1 = b_2;

b_2 = temp;

}

}

if (b_1 != gongBeiShu) {

int beiShu = gongBeiShu / b_;

a_1 = beiShu * a_;

b_1 = beiShu * b_;

}

if (b_2 != gongBeiShu) {

int beiShu = gongBeiShu / (r.getB());

a_2 = beiShu * r.getA();

b_2 = beiShu * r.getB();

}

return new Fraction(a_1 + a_2, b_1);

}

public Fraction multiply(Fraction r) {// 将自己的分数和r的分数相乘,产生一个新的Fraction的对象。

return new Fraction(a_ * (r.getA()), b_ * (r.getB()));

}

public void print() {// 将自己以“分子/分母”的形式输出到标准输出,并带有回车换行。如果分数是1/1,应该输出1。当分子大于分母时,不需要提出整数部分,即31/30是一个正确的输出。

while (b_ % a_ == 0 && a_ != 1) {// 化简分数为最简形式

b_ /= a_;

a_ /= a_;

}

if (a_ == 1 && b_ == 1) {

System.out.println(1);

} else {

System.out.println(a_ + "/" + b_);

}

}

}

分数化简java_中国MOOC分数——Java相关推荐

  1. python 分数化简_C++、Java、Python中都是怎么精确表达分数的?

    你要的东西,STL 库已经有了,叫 std::ratio ,是 C++11 标准的模板类.在 C++11 标准之后,C++委员会加入了大量高等数学相关的函数,beta函数.gamma函数.黎曼Zeta ...

  2. 两个分数化简比怎么化_我学《分数的意义》心得

    停课不停学已经有将近两个月了,我们迈入了"分数"这一部分.听妈妈说,这一块内容很重要,可我觉得到目前为止(明天就学真分数.假分数和带分数了),分数好像并不比四年级难.看了看书,再做 ...

  3. 分数化简_分数应用题七讲 (一) 图示法解分数应用题

    一.今日一讲 图示法就是用线段图(或其它图形)把题目中的已知条件和问题表示出来,这样可以把抽象的数量关系具体化,往往可以从图中找到解题的突破口.运用图示法教学应用题,是培养思维能力的有效方法之一. 图 ...

  4. 两个分数化简比怎么化_怎么化行最简形矩阵?

    同学们,大家好 今天是5月12日,星期二,国际护士节 距离21考研还有221天 有的同学问: 怎么化行最简形矩阵? 有没有什么窍门? 其实没什么窍门儿 就是按着常规的方法 大家先由上往下 把这个矩阵化 ...

  5. C语言——任意分数化简

    #include <stdio.h> #include <stdlib.h> int main() {     int a;     int b;     int c;     ...

  6. 两个分数化简比怎么化_两个分数的比化简怎么化急用

    1.先找出中主分线,确定分子部分和分母部分,然后这两部分分别进行计算,每部分的计算结果能约分的要约分,最后改成"分子部分/分母部分"的形式,再求出结果. 2.根据分数的基本性质,经 ...

  7. 两个分数化简比怎么化_分数如何化成最简分数

    Q1:百分之3化成最简分数是多? 百分之3化成最简分数是3/100 Q2:怎样将分数化成最简分数? 例如十分之五化成最简分数是二分之一.(有什么规律吗?) 分子分母同时除以他们的最大公约数 Q3:分数 ...

  8. MATLAB中 分数化简

    1.format rat  (分数格式的意思,rat即ratio缩写): 以下皆按分数来计算: 用format命令还原回小数计算: 2.>>sym(15/9);  sym是记号符号运算的意 ...

  9. 2022/2/3 四舍五入 分数化简 高精度运算

    电费分段收费 1.四舍五入 b=int((b*10)+0.5)/10.0;//四舍五入到小数点后一位 2.分段的一个方法 for(i=1;i<=150;i++)cost[i]=0.4463;fo ...

  10. WinForm分数化简计算器(带源码)

    那年我还是个纯洁的同学,那年还要写各种作业,那年有门课叫概率论-- 当时发到QQ空间的,整理到CSDN上供大家吐槽,以下是那年为做作业偷的懒-- 先上图 后贴代码(关键部分) private void ...

最新文章

  1. coreData使用
  2. python测试代码运行时间_10种检测Python程序运行时间、CPU和内存占用的方法
  3. 启明云端分享|sigmastar SSD201 \ SSD202D内存大小问题及flash分区问题解答
  4. python慢在哪里_求大神分析一下我的python脚本慢在哪里?
  5. 百度地图个性化模板列表
  6. idea中导入jdbc驱动步骤详解
  7. 利用自定义事件实现不同窗体间的通讯 -- C#篇
  8. 计算机建立excel文件,用Excel建立数据库 -电脑资料
  9. 概率图模型——贝叶斯网络
  10. 基于物联网的智能门锁应用系统设计方案
  11. 计算机找不到ie浏览器,WinXP系统IE浏览器不见了怎么办?
  12. Ubuntu/Windows 双系统安装教程
  13. Excel 2010 VBA 入门 058 定时运行程序
  14. 【人事】性格内向的人面试注意事项
  15. 2021年茶艺师(中级)考试及茶艺师(中级)复审模拟考试
  16. Centos(Linux)系统备份与还原
  17. react在线编辑Excel表格
  18. 还原《魔兽争霸3》场景全过程
  19. Java中4大基本加密算法解析
  20. 测试点击屏幕次数的软件_闪电点击app下载-闪电自动点击 安卓版v1.3.2

热门文章

  1. 分享CrystalDiskInfo8.2.4与CrystalDiskMark6.0.2个性版本下载
  2. 提高自己社会竞争力的书籍
  3. 在线生成透明ICO图标
  4. 进出口流程 报关单据
  5. 落的多音字组词有哪些
  6. SAP在采购和销售中的税务处理-增值税
  7. 计算机扫描的配置文件在哪里找,打印机扫描文件到电脑哪里找
  8. Android usb网卡配置ip地址,安卓手机通过电脑USB上网设置教程
  9. 小米pro 笔记本 计算机,小米笔记本Pro 15
  10. 微信小程序生成跳转体验版二维码