Javaの学習を始めて37日くらいの人のための問題集

Java

Map例題集。Mapは
Map<Integer,Map<Integer,Integer>>
のように入れ子にできる。それを利用して以下のアプリを作成せよ。

Q1
データを作るでは年数を入れると、1〜12月のデータが作成される。
その際、月々の値は0~999の値がランダムに入れられる。

データを閲覧するでは。登録されている年度が一覧され、年度を入力することでその年度のデータを一覧できる。

詳しくは実行例を参照のこと

[実行例]
1.データを作る,2.データを閲覧する,3.終了>1
何年度のデータを作成しますか(0:quit)>2015
何年度のデータを作成しますか(0:quit)>2016
何年度のデータを作成しますか(0:quit)>2017
何年度のデータを作成しますか(0:quit)>0
1.データを作る,2.データを閲覧する,3.終了>2
何年度のデータを閲覧しますか
2015
2016
2017
年を4桁で入力してください(0:quit)>2016
1月:526
2月:900
3月:835
4月:989
5月:198
6月:462
7月:717
8月:555
9月:808
10月:138
11月:953
12月:363
何年度のデータを閲覧しますか
2015
2016
2017
年を4桁で入力してください(0:quit)>0
1.データを作る,2.データを閲覧する,3.終了>3
アプリケーションを終了します。

アプリケーションクラス

import java.util.*;
public class Q {
	public static Map<Integer, Map<Integer, Integer>> data = new TreeMap<>();
	public static Scanner s = new Scanner(System.in);
	public static Random r=new Random();
	public static void main(String[] args) {
		while (true) {
			System.out.print("1.データを作る,2.データを閲覧する,3.終了>");
			int select=s.nextInt();
			switch(select){
			case 1:
				createData();
				break;
			case 2:
				browseData();
				break;
			case 3:
				System.out.println("アプリケーションを終了します。");
				return;				
			}
		}
	}
	private static void createData() {
		while (true) {
			System.out.print("何年度のデータを作成しますか(0:quit)>");
			int year = s.nextInt();
			if(year == 0) return;
			Map<Integer, Integer> months = new TreeMap<>();
			for (int i = 1; i <= 12; i++) {	
				int sales = r.nextInt(1000);
				months.put(i, sales);
			}
			data.put(year, months);
		}
	}
	private static void browseData() {
		if(data.isEmpty()){
			System.out.println("データがありません。");
			return;
		}
		while(true){
			System.out.println("何年度のデータを閲覧しますか");
			for(int year : data.keySet()){
				System.out.println(year);
			}
			System.out.print("年を4桁で入力してください(0:quit)>");
			int year=s.nextInt();
			if(!data.containsKey(year)){
				return;
			}
			Map<Integer,Integer> months=data.get(year);
			for(int key:months.keySet()){
				int value=months.get(key);
				System.out.println(key+"月:"+value);
			}
		}
	}
}

コメント

タイトルとURLをコピーしました