分数类
编写一个分数类Fraction
,该类包含两个int型参数表示分子与分母。
同时,该类包含如下方法:
(1)Fraction plus(Fraction r)
表示将自己的分数和r的分数相加,产生一个新的Fraction
的对象。
(2)void print()
表示将其按照“分子/分母”的形式输出。注意:若存在可以化简的情况需要化简后输出,即2/4应该被化简为1/2再输出,若结果为1/1,则输出1。
注意:暂不考虑分母为0的情况。
输入样例:
2 4 1 3
输出样例:
1/2
1/3
5/6
1/2
1/3
代码
package review;
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.print();
b.print();
in.close();
}
}
/* 请在这里填写答案 */
class Fraction{
int fz;
int fm;
public Fraction(int fz, int fm) {
this.fz = fz;
this.fm = fm;
}
//这个类实际是返回一个新的Fraction 里面存的是两数相加 并且通分之后得到的 "新的分子和分母"
Fraction plus(Fraction r){
int newfz=this.fz*r.fm+r.fz*this.fm;//计算两个数通分之后的分子之和
int newfm=this.fm*r.fm;//计算两个数通分之后的分母之和
int gcd=gcd(newfz,newfm);//计算通分之后分子和分母的最大公约数
return new Fraction(newfz/gcd,newfm/gcd);//返回一个新的Fraction对象,里面是两数通分 相加之后 并且约分了的分子和分母
}
public int gcd(int a,int b){
while(b!=0){
int temp=b;
b=a%b;
a=temp;
}
return a;
}
void print(){
int gcd=gcd(fz,fm);
fz/=gcd;
fm/=gcd;
if(fz==fm){
System.out.println(1);
}else
System.out.println(fz+"/"+fm);
}
}