面向對象程序設計-java語言第一週編程題——分數 (Mooc)

題目:分數
題目內容:
設計一個表示分數的類Fraction。這個類用兩個int類型的變量分別表示分子和分母。
這個類的構造函數是:

Fraction(int a, int b)

構造一個a/b的分數。

這個類要提供以下的功能:

double toDouble();

將分數轉換爲double

Fraction plus(Fraction r);

將自己的分數和r的分數相加,產生一個新的Fraction的對象。注意小學四年級學過兩個分數如何相加的哈。

Fraction multiply(Fraction r);

將自己的分數和r的分數相乘,產生一個新的Fraction的對象。

void print();

將自己以“分子/分母”的形式輸出到標準輸出,並帶有回車換行。如果分數是1/1,應該輸出1。當分子大於分母時,不需要提出整數部分,即31/30是一個正確的輸出。

注意,在創建和做完運算後應該化簡分數爲最簡形式。如2/4應該被化簡爲1/2。

你寫的類要和以下的代碼放在一起,並請勿修改這個代碼:

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		Fraction a = new Fraction(in.nextInt(), in.nextInt());
		Fraction b = new Fraction(in.nextInt(),in.nextInt());
		a.print();
		b.print();
		a.plus(b).print();
		a.multiply(b).plus(new Fraction(5,6)).print();
		a.print();
		b.print();
		in.close();
	}
}

注意,你的類的定義應該這樣開始:

class Fraction {

也就是說,在你的類的class前面不要有public。

輸入格式:

程序運行時會得到四個數字,分別構成兩個分數,依次是分子和分母。

輸出格式:

輸出一些算式。這些輸入和輸出都是由Main類的代碼完成的,你的代碼不要做輸入和輸出。

輸入樣例:

2 4 1 3

輸出樣例:
1/2
1/3
5/6
1
1/2
1/3

代碼實現
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		Fraction a = new Fraction(in.nextInt(), in.nextInt());
		Fraction b = new Fraction(in.nextInt(),in.nextInt());
		a.print();
		b.print();
		a.plus(b).print();
		a.multiply(b).plus(new Fraction(5,6)).print();
		a.print();
		b.print();
		in.close();
	}
}

class Fraction{
	int a;
	int b;
	//構造函數
	Fraction(int a, int b){
		this.a = a;
		this.b = b;
	}
	//將分數轉換爲double
	double toDouble(){
		return (double)this.a/this.b;
	}
	//分數加法
	Fraction plus(Fraction r) {
		int a;
		int b;
		if (this.b == r.b) {
			a = this.a + r.a;
			b = this.b + r.b;
		}
		else {
			a = this.a * r.b + r.a * this.b;
			b = this.b * r.b;
		}
		return new Fraction(a, b);
	}
	//分數乘法
	Fraction multiply(Fraction r) {
		int a;
		int b;
		a = this.a * r.a;
		b = this.b * r.b;
		return new Fraction(a, b);
	}
	//分數輸出
	void print() {
		if (a == b) {
			System.out.println("1");
		}
		else {
			int i = Maxcd(a, b);
			if (i != 0) {
				System.out.println(a/i + "/" + b/i);
			}
			else {
				System.out.println(a + "/" + b);
			}
		}
	}
	//找兩數的最大公約數
	int Maxcd(int a, int b) {
		int m = 0;
		if(a>b) {
			m=b;
		}
		else {
			m=a;
		}
		for(int i=m;i<=m;i--) {
			if((a % i == 0) && (b %i == 0)) {
				m = i;
				break;
			}
		}
		return m;
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章