Map例題集。

Q1
日本語の曜日を入力するとスペイン語の曜日を教えてくれるアプリを作成せよ。
データの格納にはMapを利用すること。
以下のデータをコピーして使って良い

map.put("月", "Lunes(ルネス)");
map.put("火", "Martes(マルテス)");
map.put("水", "Miércoles(ミエルコレス)");
map.put("木", "Jueves(フエベス)");
map.put("金", "Viernes(ビエルネス)");
map.put("土", "Sábado(サバド)");
map.put("日", "Domingo(ドミンゴ)");

[実行例]
漢字一文字で曜日を入力する。月〜日以外の文字が入力された場合はアプリケーション終了。

調べたいスペイン語の曜日を入力してください。>日
日:Domingo(ドミンゴ)
調べたいスペイン語の曜日を入力してください。>木
木:Jueves(フエベス)
調べたいスペイン語の曜日を入力してください。>e
アプリケーションを終了します。

アプリケーションクラス

import java.util.*;

public class HashMapApp {
	public static void main(String[] args) {
		HashMap<String,String> map=new HashMap<>();
		map.put("月", "Lunes(ルネス)");
		map.put("火", "Martes(マルテス)");
		map.put("水", "Miércoles(ミエルコレス)");
		map.put("木", "Jueves(フエベス)");
		map.put("金", "Viernes(ビエルネス)");
		map.put("土", "Sábado(サバド)");
		map.put("日", "Domingo(ドミンゴ)");
		Scanner s=new Scanner(System.in);
		while(true){
			System.out.print("調べたいスペイン語の曜日を入力してください>");
			String str=s.next();
			if(map.containsKey(str)){
				System.out.println(str+":"+map.get(str));
			}else{
				System.out.println("アプリケーションを終了します。");
				s.close();
				return;
			}
		}
	}
}

Q2
サイコロの出目の回数を表示するアプリをLinkedHashMapを用いて作成せよ。
[実行例]
サイコロを何回ふりますか>10
***result***
1...2回
2...0回
3...3回
4...2回
5...2回
6...1回

[解答例]

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scan =new Scanner(System.in);
		Random rand=new Random();
		LinkedHashMap<Integer,Integer> data=new LinkedHashMap<>();
		for(int i=1;i<=6;i++) {
			data.put(i, 0);
		}
		System.out.print("サイコロ何回ふる?>");
		int num=scan.nextInt();
		for(int i=0;i<num;i++) {
			int diceNo=rand.nextInt(6)+1;
			data.put(diceNo,data.get(diceNo)+1);
		}
		System.out.println("****result****");
		for(int key:data.keySet()) {
			System.out.println(key+"..."+data.get(key));
		}
	}

}

Q
HashMapを使って以下の処理を作成せよ。

[実行例]
1~100の乱数を100回発生させたよ
***result***
62種類の数値が出ました。
1…2
2…2
7…1
8…2
9…1
12…2
13…2
14…1
15…1
16…3
17…1
19…2
20…2
21…1
22…2
23…1
26…2
27…2
28…3
30…1
31…1
37…1
38…3
39…2
42…1
43…1
45…4
46…1
47…1
50…1
52…2
53…1
54…1
56…2
57…1
58…1
59…2
60…2
61…2
64…1
65…2
68…1
69…2
70…1
71…1
74…2
76…3
77…1
78…4
79…1
80…2
81…2
82…1
83…2
89…1
90…1
91…3
93…1
95…1
96…1
97…1
99…1

import java.util.HashMap;
import java.util.Random;

public class HashMapLesson {
	public static void main(String[] args) {
		Random rand=new Random();
		HashMap<Integer,Integer> map=new HashMap<>();
		final int MINNUM=1,MAXNUM=100,COUNT=100;
		System.out.printf("%d~%dの乱数を%d回発生させたよ%n",MINNUM,MAXNUM,COUNT);
		for(int i=0;i<COUNT;i++){
			int num=rand.nextInt(MAXNUM)+MINNUM;
			if(map.containsKey(num)){
				map.put(num, map.get(num)+1);
			}else{
				map.put(num, 1);
			}
		}
		System.out.println("***result***");
		System.out.println(map.size()+"種類の数値が出ました。");
		for(int i=MINNUM;i<=MAXNUM;i++){
			if(map.containsKey(i)){
				System.out.println(i+"..."+map.get(i));
			}
		}
	}
}