zoukankan      html  css  js  c++  java
  • 翁恺 java进阶第一周作业

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

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

    public class Mian {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Fraction a=new Fraction(2,4);
            Fraction b=new Fraction(1,3);
            a.print();
            b.print();
            a.plus(b).print();
            a.multiply(b).plus(new Fraction(5,6)).print();
            a.print();
            b.print();
        }
    
    }
    class Fraction {
        int upNumber;
        int downNumber;
        
        Fraction(int upNumber,int downNumber)
        {
            this.upNumber=upNumber;
            this.downNumber=downNumber;
        }
        
        public double toDouble() 
        {
            return upNumber*1.0/downNumber;
        }
        public Fraction plus(Fraction r) 
        {
            Fraction n=new Fraction(0,0);
            n.upNumber=this.upNumber*r.downNumber+r.upNumber*this.downNumber;
            n.downNumber=this.downNumber*r.downNumber;
            return n;
        }
        public Fraction multiply(Fraction r)
        {
            Fraction n=new Fraction(0,0);
            n.upNumber=this.upNumber*r.upNumber;
            n.downNumber=this.downNumber*r.downNumber;
            return n;
        }
        void print()
        {
            int a=0,b=0,c=0;
            if(upNumber<downNumber) {
                a=downNumber;
                b=upNumber;
            }
            else {
                a=upNumber;
                b=downNumber;
            }
            while(b!=0)
            {
                c=a-b;
                a=b>c?b:c;
                b=b>c?c:b;
            }
            upNumber/=a;
            downNumber/=a;
            if(upNumber==downNumber)
                System.out.println(upNumber/downNumber);
            else
                System.out.println(upNumber+"/"+downNumber);
        }
    }
  • 相关阅读:
    Promise对象
    iterator和for of 循环
    vue项目基本流程
    BASH_SOURCE 用法
    Java GC CMS 日志分析
    zookeeper 删除snapshot和transaction log的源码解读
    openresty nginx 安装过程记录
    opentesty--luasocket 安装
    为什么要使用SLF4J而不是Log4J
    要过一遍的博客列表
  • 原文地址:https://www.cnblogs.com/oldfish123/p/13387124.html
Copyright © 2011-2022 走看看