public class Frac { // 確認用 public static void main(String[] args) { Frac d1_3 = new Frac(1,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; } }