设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母。
源码如下
import java.util.Scanner;
class Fraction { //分数类
private int numerator; //分子
private int denominator; //分母
public Fraction(int n, int d) { //构造分子分母,并约分
// TODO Auto-generated constructor stub
numerator = n;
denominator = d;
YueFen();
}
public void YueFen() { //同除最大公约数以约分
int temp = FindMaxYueNum();
numerator /= temp;
denominator /= temp;
}
public int FindMaxYueNum() { //辗转相除法寻找最大公约数
int big = 0, small = 0;
if(numerator > denominator) {
big = numerator;
small = denominator;
}else if(numerator < denominator) {
big = denominator;
small = numerator;
}else {
return numerator;
}
for(; big % small != 0; ) {
int temp = big % small;
big = small;
small = temp;
}
return small;
}
public double toDouble() { //转换为小数形式
return (double)numerator / denominator;
}
public Fraction plus(Fraction r) { //与分数r相加并约分
Fraction a = new Fraction(1, 1);
a.denominator = this.denominator * r.denominator;
a.numerator = this.numerator*r.denominator + r.numerator*this.denominator;
a.YueFen();
return a;
}
public Fraction multiply(Fraction r) { //与分数r相乘并约分
Fraction a = new Fraction(1, 1);
a.denominator = this.denominator * r.denominator;
a.numerator = this.numerator * r.numerator;
a.YueFen();
return a;
}
public void print() { //输出分数形式
System.out.println(numerator+"/"+denominator);
}
public static void main(String[] args) {
//Main
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
1/2
1/3