有一個程式,應該是很簡單,
可是因為我還只是個初學者,
不知道該如何修改,
我只將無法正常跑的程式改時程可跑,
但也不知道對不對,
而且改了好久還是不知道該怎麼改...
所以請大大們幫忙!
-------------------------------------------------------------------
要將程式改為複雜一點,
這個是加法,
要改成使用LCM和gcd的方法式
且要把減、乘、除都寫出來
我有試過好像可以用if 之類的東西,
可是不知如何使用
以下是給的提示:
a c a*gcd (b,d) + b*gcd (b,d)
─ + ─ = ────────────────
b d LCM (b,d)
LCM(b,d) = b*d / gcd (b,d)
gcd(12,32)= gcd(32%12,12) = gcd(8,12) = gcd(12%8,8) = gcd (4,8) = gcd (8%4,4)
以下是程式:
public class Rational{
int a_enum; //因為enum 是Java中的保留字,所以不能當作宣告變數,因此改為 a_enum
int denom;
Rational(){
this(0,1);
}
Rational(int a_enum,int denom){
this.a_enum=a_enum;
this.denom=denom;
}
void setA_enum(int a_enum){
this.a_enum=a_enum;
}
void setDenom(int denom){
this.denom=denom;
}
int getA_enum(){
return a_enum;
}
int getDenom(){
return denom;
}
public String toString(){ //加上public, 可供其他類別使用
String str;
str = a_enum+"/"+denom;
return str;
}
Rational add(Rational adder){
Rational result=new Rational();
result.setDenom(this.denom*adder.denom);
result.setA_enum(this.denom * adder.a_enum + this.a_enum * adder.denom);
return result;
}
} //End of Rational
|
public class TestRational{
public static void main(String[] args){
Rational obj1=new Rational();
Rational obj2=new Rational(3,4);
obj1.setA_enum(4);
obj2.setDenom(5);
System.out.println(obj1.add(obj2));
} //End of main method
} //End of TestRational |
[
本帖最後由 hane1129 於 2010-2-1 19:31 編輯 ]