java_分数

2023-10-29

题目内容:

设计一个表示分数的类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

 

时间限制:500ms内存限制:32000kb
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) {
        this.a = a;//this调用本类中的成员变量
        this.b = b;//这里是把形参的值传递给上面带private的a,b
    }
    
//    得到分子
    public int getA() {
        return this.a;
    }
    
//    得到分母
    public int getB() {
        return this.b;
    }

//    分数加法
    public Fraction plus(Fraction r) {
        int a1=this.a;//第一个分子
        int b1=this.b;//第一个分母
        int a2=r.getA();//第二个分子
        int b2=r.getB();//第二个分母
        int gbs=b1*b2;//公倍数,分母相乘进行通分
        int a3=a1*b2+a2*b1;//通分后两分数相加得到的分子
        return new Fraction(a3,gbs);
    }
    
//    分数乘法
    public Fraction multiply(Fraction r) {
        return new Fraction(a*(r.getA()),b*(r.getB()));
    }
    
//    输出方法
    public void print() {
        int gys=1;//公约数,初始化为1
//        找出最大公约数
        for(int i=1;i<=a;i++) {
            if(a%i==0&&b%i==0) {
                gys=i;
            }
            else {
                continue;
            }
        }
//        化为最简分数
        a=a/gys;
        b=b/gys;

        if(a==1&&b==1) {
            System.out.println(1);//分子分母同为1输出1
        }
        else {
            System.out.println(a+"/"+b);//否则,直接输出
        }
    }
}

  

 

转载于:https://www.cnblogs.com/songzi-yang/p/10117396.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java_分数 的相关文章

随机推荐

  • 配置Nginx作为动态应用程序代理

    简介 在本教学文章中 我们将学习如何将Nginx配置为代理动态应用程序 如PHP Python或Node js 以处理动态请求 通过将Nginx配置为动态应用程序代理 我们可以提供高性能 可靠和安全的动态内容传递 本教程将介绍如何配置Ngi
  • C++初识

    简单的C 程序 include
  • linux 内核编程 常见错误,Linux编程常见错误及解决方案

    对于linux新手来说Linux编程会经常遇见一些问题 今天列出新手们最经常遇到的编程错误 并提供解决方案 1 由于是Linux新手 所以现在才开始接触线程编程 照着GUN Linux编程指南中的一个例子输入编译 结果出现如下错误 unde
  • [Pytorch系列-52]:循环神经网络RNN - 全连接网络与RNN网络在时间序列数据集上拟合的比较

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 121526014 目录 第1章 概述
  • IDEA实现远程调试步骤详解

    IDEA不仅可以本地调试代码 也可以远程调试代码 一 基本原理 本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信 传递调试指令和调试信息 被调试程序的远程虚拟机 作为 Debug 服务端 监听 Debug 调试
  • 【Mo 人工智能技术博客】时序预测模型——LSTNet

    时序预测模型 LSTNet 作者 陈东瑞 1 背景 多元时间序列数据在我们的日常生活中无处不在 从股票市场的价格 高速公路上的交通流量 太阳能发电厂的输出量 不同城市的温度等等 在这样的应用中 用户通常对基于时间序列的历史观察来对新趋势或潜
  • 人脸识别技术的成熟让刷脸支付落地

    按照识别的精度排序 确实是虹膜 指纹 人脸的识别精度依次降低 但人脸识别可以根据摄像头的提升而提升 双目摄像头 结构光摄像头 TOF等等 这个上升空间很大 从应用性来看 你现在让所有的用户都去提取虹膜信息 指纹信息 这个很难 不现实 而我们
  • 文件复制到u盘后文件夹是空的,怎么恢复?

    便携式存储设备有很多种 其中就有u盘 由于这个给予我们生活工作中极大的便利 相信不少小伙伴都喜欢随身携带一个 但不少人遇到过明明已经把文件存放到u盘里了 在正常打开的情况下 再次使用时 出现u盘文件夹是空白的 碰到这样的情况 文件复制到u盘
  • 量化指标公式源码_精选指标:通达信公式无敌紫金钻选股指标——附源码

    精选指标 通达信公式无敌紫金钻选股指标 附源码 精选指标 通达信公式无敌紫金钻选股指标 附源码 VAR1 CLOSE MA CLOSE 21 MA CLOSE 21 100 VAR2 CLOSE LLV LOW 43 HHV HIGH 43
  • 第10章 K8s进阶篇-高级调度计划任务,污点和容忍和Affinity

    10 1 什么是Job job常用作初始化数据和基本的创建操作 job创建成功后不会立即执行容器命令 只有suspend true 才会执行 10 2 Job使用入门 root k8s master01 10st cat job yaml
  • HTML实现简单登录以及界面跳转

  • 经典上中(左右)下三栏布局

    经典上中 左右 下三栏布局 利用绝对定位实现三栏布局 1 html div class container div class top 我是顶部 div div class content div class div div div
  • 构建用户画像-标签体系

    用户画像是目前在技术公司广泛使用的技术 是根据客户人口统计信息 社交关系 偏好习惯和消费行为等信息而抽象出来的标签化画像 常常用在精准营销 圈定人群 发送短信消息 APP弹窗等等 用户画像的准确性往往会直接影响到运营的效果和获客成本 用户画
  • Qt Widgets 之 QDockWidget(停靠窗口)

    目录 什么是停靠窗口 如何添加停靠窗口 QDockWidget setWidget QMainWindow addDockWidget 设置停靠选项 Options AnimatedDocks AllowNestedDocks AllowT
  • Keil在线调试程序乱跑

    最近改了一个别人写的程序 但是在调试器调试过程中出现了一个奇怪的现象 代码部分如下 Sys Run这个函数在main函数中被无限循环调用 初始化时我会将TCENABLE这个标志位置0 通过CAN发送信息来改变他的数值 按道理来说当我运行程序
  • gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化

    相关博客http blog chinaunix net uid 24954950 id 2956476 html 相关博客http blog csdn net misiter article details 7514428 相关博客http
  • linux top命令看到的实存(RES)与虚存(VIRT)分析

    近期在公司中解决程序使用的内存高问题 将一部分之前无法回收的内存进行了回收 实现降内存效果 降实存 在统计效果时 QA问是统计RES 实存 还是VIRT 虚存 在网上学习看了一些博客 这里自己总结一下RES和VIRT的区别 1 概念 VIR
  • 绘制同y轴双侧柱状图,且y轴位置在坐标为0的位置,左右x轴均为正值(Python)

    绘制同y轴双侧柱状图 且y轴位置在坐标为0的位置 左右x轴均为正值 Python 在数据可视化中 柱状图是一种常用的图表类型 用于展示不同类别或变量之间的比较 本文将介绍如何使用Python绘制一个同y轴双侧柱状图 且y轴的位置在坐标为0的
  • JQuery之ContextMenu(右键菜单)

    插件下载地址 http www trendskitchens co nz jquery contextmenu jquery contextmenu r2 js 压缩版 http www trendskitchens co nz jquer
  • java_分数

    题目内容 设计一个表示分数的类Fraction 这个类用两个int类型的变量分别表示分子和分母 这个类的构造函数是 Fraction int a int b 构造一个a b的分数 这个类要提供以下的功能 double toDouble 将分