翁恺 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); } }