public class TestFractory {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
fracAdd(1,5,7,20);//結果爲:11/20
//fracSub(1,5,7,20);//分數相減
//fracMul(1,5,7,20);//分數相乘
//fractDiv(1,5,7,20);//分數相除
}
static void fracAdd(int first_numerator,int first_denominator,int second_numrator,int second_denominator){
//以下代碼能夠在控制檯上顯示結果
//需要調用求最大公約數的函數
//需要調用求最小公倍數的函數
System.out.println("進行分數的相加運算!");
int m = lcm(first_denominator,second_denominator);
int a = first_numerator*(m/first_denominator);
int b = second_numrator*(m/second_denominator);
int c= a+b;
int d = gcd(c,m);
int e = c/d;
int f = m/d;
System.out.println("運算結果爲:" + e +"/" + f);//
}
static int gcd(int m,int n){
int a=0;
if(m<n)
{
a=m;
m=n;
n=a;
}
int i;
for(i=n;i>1;i--)
if(m%i==0&&n%i==0)
break;
return i;
}
static int lcm(int m,int n){
int a=0;
if(m<n)
{
a=m;
m=n;
n=a;
}
int j;
for(j=m;;j++)
if(j%m==0&&j%n==0)
break;
return j;
}
}
運行結果:
進行分數的相加運算!
運算結果爲:11/20
經驗總結:
static int gcd(int m,int n){
int a=0;
if(m<n)
{
a=m;
m=n;
n=a;
}
for(int i=n;i>1;i--)
if(m%i==0&&n%i==0)
break;
return i;
}
將int寫在for循環裏面會報錯,因爲它的的作用域只在for循環裏面;
System.out.println("運算結果爲:" + e +"/" + f);//
要用+號連接字符串;