この問題を解くためには…
 → 応用編第1日目参照

問題1:静的メンバ

prob1-1.(難易度:★)

以下のプログラムは、1から10の2つ乱数を発生させ、その和を求めるものである。このとき、このプログラムを以下のように改造しなさい。

Problemex1_1.java
package problemex1;

public class Problemex1_1 {

	public static void main(String[] args) {
		int a = (int)(Math.random() * 10)  + 1;		//	1~10の乱数を発生
		int b = (int)(Math.random() * 10)  + 1;		//	1~10の乱数を発生
		int result = add(a,b);	//	二つの数の和を求める
		System.out.println("a = " + a);
		System.out.println("b = " + b);
		System.out.println(a + " + " + b + " = " + result);
	}
	//	足し算
	static int add(int a,int b){
		return a + b;
	}

}

実行結果の例
a=5   ← 発生した乱数を表示
b=2   ← 発生した乱数を表示
5 + 2 = 7

同様に、二つの数の差を求める静的メソッド、sub()を追加し、最後に、その結果も表示するようにしなさい。

期待される実行結果の例
a=5   ← 発生した乱数を表示
b=2   ← 発生した乱数を表示
5 + 2 = 7
5 - 2 = 3

prob1-2.(難易度:★)

以下のプログラムは、1から10の2つ乱数を発生させ、その積を求めるものである。

Problemex1_2.java
package problemex1;

public class Problemex1_2 {

	public static void main(String[] args) {
		int a = (int)(Math.random() * 10)  + 1;		//	1~10の乱数を発生
		int b = (int)(Math.random() * 10)  + 1;		//	1~10の乱数を発生
		int result = mul(a,b);	//	二つの数の積を求める
		System.out.println("a = " + a);
		System.out.println("b = " + b);
		System.out.println(a + " * " + b + " = " + result);
	}
	//	掛け算
	static int mul(int a,int b){
		return a * b;
	}

}

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

実行結果の例
a=5   ← 発生した乱数を表示
b=2   ← 発生した乱数を表示
5 * 2 = 10

このプログラムを以下のように改造しなさい。

① 三つ目の整数型変数cを用意し、a,b,に続き、"c="と画面に表示して、キーボードから値を代入させる。
② 関数mul()を、3つの整数の積を求める関数に書き換える。

期待される実行結果の例
a=5   ← 発生した乱数を表示
b=2   ← 発生した乱数を表示
c=3   ← 発生した乱数を表示
5 * 2 * 3 = 30

prob1-3.(難易度:★)

実行例にならい、1から10の2つ乱数を発生させ、以下に示し他静的メソッドを用いてそれぞれの数をたて、よこの■の数として、四角形を表示させるプログラムを作りなさい。

実行結果の例
たて:3   ← 発生した乱数を表示
よこ:5   ← 発生した乱数を表示

■■■■■
■■■■■
■■■■■   ← 縦3個、横5個の■マークを表示

ただし、静的メソッドの概要は以下のようにすること。

関数名square
処理内容縦、横に指定された数の■マークを表示する。ただし、どちらかの値が0以下の場合は、何も表示しない。
引数整数の値×2(縦、横の値)
戻り値なし

prob1-4.(難易度:★★)

以下のプログラムは、カウンタークラスCountを使用したプログラムである。このプログラムを、指定されたように変更しなさい。

prob1-4:Counter.java
package problemex1;

public class Counter {
	//	カウント
	private int count = 0;
	//	コンストラクタ
	public void reset(){
		count = 0;
	}
	//	カウント
	public void count(){
		count++;
	}
	//	値の取得
	public int getCount(){
		return count;
	}

}
Problemex1_4.java
package problemex1;

public class Problemex1_4 {

	public static void main(String[] args) {
		Counter c1,c2;
		c1 = new Counter();
		c2 = new Counter();
		c1.count();
		c2.count();
		c2.count();
		c2.reset();
		c1.count();
		c1.count();
		c2.count();
		System.out.println("c1のカウント数:" + c1.getCount());
		System.out.println("c2のカウント数:" + c2.getCount());
		System.out.println("トータルのカウント数:" + (c1.getCount() + c2.getCount()));
	}

}
実行結果
c1のカウント数:3
c2のカウント数:1
トータルのカウント数:4

Problemex1_4.javaの18行目に出ている、c1.getCount() + c2.getCount()を、クラスCounterの静的メソッドによって出力できるようにプログラムを改造しなさい。その際、以下のようにクラスCounterを変更すること。

Counterクラスの変更ポイント
  1. 作成する静的メソッドの名前は、getTotalCount()とする。(戻り値はint)
  2. このメソッド内では、トータルのカウント回数を記録した静的フィールドを、totalCountとする。