問題6:クラスとオブジェクト

この問題を解くためには…
 → 基本編第6日目参照

prob6-1.(難易度★)

以下のプログラムを改造し、クラスMinMaxのメンバ関数max(),min()の引数の数を3つにし、期待される実行結果にならい、3つの数の最大値・最小値を出せるようにプログラムを改造しなさい。

prob6-1:Problem6_1.java
package problem6;

public class Problem6_1 {

	public static void main(String[] args) {
		Minmax m = new Minmax();
		int a = 4,b = 2;
		System.out.println(a + "と" + b + "のうち、最大のものは" + m.max(a,b));
		System.out.println(a + "と" + b + "のうち、最小のものは" + m.min(a,b));

	}

}
Minmax.java
package problem6;

public class Minmax {
	//	最大値の取得
	public int max(int n1,int n2){
		if (n1 > n2){
			return n1;
		}
		return n2;
	}
	//	最大値の取得
	public int min(int n1,int n2){
		if (n1 < n2){
			return n1;
		}
		return n2;
	}

}
実行結果
4と2のうち、最大のものは4
4と2のうち、最小のものは2

prob6-2.(難易度★)

以下のプログラムは、二つの実数の値の計算をするくらす、Calcを使ったプログラムである。このクラスに、指定したメソッド追加し、期待される実行結果が得られるようにプログラムを変更しなさい。

prob6-2:Problem6_2.java
package problem6;

public class Problem6_2 {

	public static void main(String[] args) {
		Calc c = new Calc();
		double a = 4.0,b = 2.0;
		System.out.println(a + " + " + b + " = " + c.add(a,b));
		System.out.println(a + " - " + b + " = " + c.sub(a,b));

	}

}
Calc.java
package problem6;

public class Calc {
	//	加算
	double add(double a,double b){
		return a + b;
	}
	//	加算
	double sub(double a,double b){
		return a - b;
	}
}

これを実行すると、以下のようになる。

実行結果
4.0 + 2.0 = 6.0
4.0 - 2.0 = 2.0
Calcクラスに追加するメソッド
メソッド名mul
処理内容与えられた二つの引数の積を返す。
引数二つの数値(ともにdouble)
戻り値二つの引数の積

メソッド名div
処理内容与えられた二つの引数の商を返す。
引数二つの数値(ともにdouble)
戻り値二つの引数の商
期待される実行結果の例
4.0 + 2.0 = 6.0
4.0 - 2.0 = 2.0
4.0 * 2.0 = 8.0   ← mul()メソッドで実行
4.0 / 2.0 = 2.0   ← div()メソッドで実行

prob6-3.(難易度★)

以下のプログラムは、円の半径から、円周の長さを求めるものである。このクラスに、指定したメソッド追加し、期待される実行結果が得られるようにプログラムを変更しなさい。

prob6-3:Problem6_3.java
package problem6;

public class Problem6_3 {

	public static void main(String[] args) {
		Circle c = new Circle();
		//	円の半径を設定
		c.r = 4.0;
		System.out.println("半径" + c.r +"の円の円周の長さは" + c.circumference());

	}

}
Circle.java
package problem6;

public class Circle {
	//	半径
	public double r;
	//	円周の長さを求める
	public double circumference(){
		return 2 * 3.14 * r;
	}

}

これを実行すると、以下のようになる。

実行結果
半径4.0の円の円周の長さは25.12

このプログラムのCalcクラスに、以下のメソッドを追加する。

Calcクラスに追加するメソッド
メソッド名area
処理内容メンバ変数rで与えられた円の面積を求める。
引数なし
戻り値メンバ変数rで与えられる円の面積

これにより、期待される実行結果は以下の通り

期待される実行結果
半径4.0の円の円周の長さは25.12
半径4.0の円の面積の長さは50.24   ← 同一の円の面積を求めた結果