実技(データベース設計/開発実習)4

1.サイコロ問題
以下の処理を実現せよ。
目が1~6のサイコロを20回振る。一番回数が多く出た目*出た回数がポイントとなる。
なお複数の目に最多回数があった場合、数が大きい方をポイントする。
詳しくは実行例を参照のこと
[実行例]
**出目**
4
2
5
5
6
3
2
4
5
6
6
4
1
2
4
5
5
4
3
3
**出目表**
| 1| 1|
| 2| 3|
| 3| 3|
| 4| 5|
| 5| 5|
| 6| 3|
**結果表示**
得点は25点です!

解)

import java.util.Random;

public class Dice {

	public static void main(String[] args) {
		final int GAME_COUNT=20;
		final int MAX_DICE_NUMBER=6;
		Random rand=new Random();
		//出目配列を作成
		int[] dataTable=new int[MAX_DICE_NUMBER];
		System.out.println("**出目**");
		for(int i=0;i<GAME_COUNT;i++){
			//サイコロの目を0~5で発生させる
			int diceIndex=rand.nextInt(MAX_DICE_NUMBER);
			//出目の表示は1~6
			System.out.println(diceIndex+1);
			//出目配列をインクリメント
			dataTable[diceIndex]++;
		}
		System.out.println("**出目表**");
		showTable(dataTable);
		/***最大回数とその目の判定***/
		//最多回数の目を管理する変数(0で初期化)
		int diceIndex=0;
		//最多回数を管理する変数(0の回数で初期化)
		int countMax=dataTable[0];
		//配列を回しながら最大回数とその目を探す(0は不要)
		for(int i=1;i<dataTable.length;i++){
			//もしその目が最大回数以上なら
			if(dataTable[i]>=countMax){
				//最大回数を更新
				countMax=dataTable[i];
				//目を更新
				diceIndex=i;
			}
		}
		//得点計算
		int point=(diceIndex+1)*countMax;
		System.out.println("**結果表示**");
		System.out.printf("得点は%d点です!",point);

	}
	//表を出力するメソッド
	static void showTable(int[] data){
		for(int i=0;i<data.length;i++){	
			System.out.printf("|%2d|%2d|%n", i+1,data[i]);
		}	
	}
}

2.サイコロ問題解説
3.サイコロ問題応用
上記問題でサイコロを通常のサイコロではなく目が
[1,3,5,7,9,11,13]
の変則サイコロを使うこととなった。
ソースコードを修正せよ。
解)

import java.util.Random;

public class Dice {
	//クラス定数で宣言
	static final int GAME_COUNT=20;
	static final int[] DICE={1,3,5,7,9,11,13}; 
	
	public static void main(String[] args) {
		Random rand=new Random();
		//出目配列を作成
		int[] dataTable=new int[DICE.length];
		System.out.println("**出目**");
		for(int i=0;i<GAME_COUNT;i++){
			int diceIndex=rand.nextInt(DICE.length);
			System.out.println(DICE[diceIndex]);
			//出目配列をインクリメント
			dataTable[diceIndex]++;
		}
		System.out.println("**出目表**");
		showTable(dataTable);
		/***最大回数とその目の判定***/
		//最多回数の目を管理する変数(0で初期化)
		int diceIndex=0;
		//最多回数を管理する変数(0の回数で初期化)
		int countMax=dataTable[0];
		//配列を回しながら最大回数とその目を探す(0は不要)
		for(int i=1;i<dataTable.length;i++){
			//もしその目が最大回数以上なら
			if(dataTable[i]>=countMax){
				//最大回数を更新
				countMax=dataTable[i];
				//目を更新
				diceIndex=i;
			}
		}
		//得点計算
		int point=DICE[diceIndex]*countMax;
		System.out.println("**結果表示**");
		System.out.printf("得点は%d点です!",point);

	}
	//表を出力するメソッド
	static void showTable(int[] data){
		for(int i=0;i<data.length;i++){	
			System.out.printf("|%2d|%2d|%n", DICE[i],data[i]);
		}	
	}
}


4.SQLの関数

MySQL-3日目(基礎文法2)


5.テーブルの結合

MySQL-4日目(基本文法2演習)