码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-02-17 16:17:43      阅读:2988      评论:0      收藏:0      [点我收藏+]

标签:ack   str   运行时   static   一起   构造   pack   pre   题目   

这个类的构造函数是:

 

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


代码如下:


Fraction类:

package test1;

class Fraction {
    int a,b;
    Fraction(int a,int b){//构造函数
        this.a=a;
        this.b=b;
    }
    void print() {//打印分数
        int x = a,y = b,r;
        if(a == b) {
            System.out.println(1);
            return;
        }
        while(y!=0) {
            r = x%y;
            x=y;
            y=r;
        }
        a/=x;
        b/=x;
        System.out.println(a + "/" + b);
    }
    double toDouble() {//分数转化为double类型
        return a/b;
    }
    Fraction plus(Fraction r) {//分数加法
        Fraction result = new Fraction(0,0);
        result.b=this.b*r.b;
        result.a=this.a*r.b+r.a*this.b;
        return result;
    }
    Fraction multiply(Fraction r) {//分数乘法
        Fraction result=new Fraction(0,0);
        result.a=this.a*r.a;
        result.b=this.b*r.b;
        return result;
    }

}

Main类(题目中已给出):

package test1;
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();

    }

    }

运行结果:

2 4 1 3
1/2
1/3
5/6
1
1/2
1/3

 

 

 

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

标签:ack   str   运行时   static   一起   构造   pack   pre   题目   

原文地址:https://www.cnblogs.com/chara/p/12321772.html

(0)
(5)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!