package zizen;
public class Frac {
// 確認用
public static void main(String[] args) {
Frac d1_3 = new Frac(2,3);
Frac d1_2 = new Frac(1,2);
Frac plus = d1_3.tasu(d1_2);
d1_3.print(); System.out.print("+ "); d1_2.print(); System.out.print("= ");
plus.println();
Frac minus = d1_2.hiku(d1_3);
d1_3.print("-"); d1_2.print("="); minus.println();
Frac d7_63 = new Frac(7,63);
d7_63.print("=");
d7_63.yakubun();
d7_63.println();
Frac d2_1 = new Frac(2,1);
Frac mul = d1_2.kakeru(d2_1);
d1_2.print("*"); d2_1.print("=");
mul.print("=");
mul.yakubun().println();
Frac div = d1_2.waru(d2_1);
d1_2.print("/"); d2_1.print("=");
div.println();
Frac d = new Frac(4209,18453);
Frac e = new Frac(83, 324);
d.tasu(e).yakubun().println(); //メソッドチェーン
d.waru(e).yakubun().println(); //メソッドチェーン
}
//メンバー変数
int a; //bunsi
int b; //bumbo
// コンストラクタ
public Frac() {
a = 2; b = 3;
}
public Frac(int ia, int ib) {
a = ia; b = ib;
}
//メソッド
public void setBunsiBumbo(int fa, int fb){
a = fa; b = fb;
}
public void print(){
System.out.print(a+"/"+b+" ");
}
public void print(String append){
System.out.print(a+"/"+b+" "+append+" ");
}
public void println(){
System.out.println(a+"/"+b);
}
public Frac tasu(Frac f){
int na = a * f.b + b * f.a;
int nb = b * f.b;
return new Frac(na,nb);
}
public Frac hiku(Frac f){
int na = a * f.b - b * f.a;
int nb = b * f.b;
return new Frac(na,nb);
}
public Frac kakeru(Frac f){
int na = a * f.a;
int nb = b * f.b;
return new Frac(na,nb);
}
public Frac waru(Frac f){
int na = a * f.b;
int nb = b * f.a;
return new Frac(na,nb);
}
public Frac yakubun(){ //約分:破壊的メソッド
int g = gcd(a,b);
a = a/g ; b = b/g;
return new Frac(a,b); //一応新しいオブジェクトもつくって返す(メソッドチェーンするため)
}
private int gcd(int m, int n){
while (m != n) {
if (m < n) { n -= m; }
else { m -= n; }
}
return n;
}
}