Newer
Older
masaya_77 / src / Frac.java
@Motoki Miura Motoki Miura on 15 Sep 2021 2 KB modified frac
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;
	}
}