【練習問題】Java初心者向けMapの使い方! HashMapで電話帳を作る

こんにちは。飯塚です。
 
今回はJava初心者の方向けにHashMapを使った練習問題を作りました。記事を読む・動画を見る、だけでは、プログラムはなかなか書けるようになりません。手を動かすのが一番近道なので、問題形式にしました。
 
最初は全く分からなかっとしても、3~5回ぐらい解き直すと、驚くほど使いこなせるようになれるので、安心してください。

練習問題 HashMapを使って電話帳を作ってみる

練習問題

決まった名前が入力されたときに、その名前に紐づく電話番号を返すプログラムを作成してください。java.util.HashMapを使って名前を電話番号を紐づけることで、簡単な電話帳を作ってみましょう。

電話帳の登録内容

名前 電話番号
田中 080-1234-5678
鈴木 090-0000-0000
ジョンソン 001-010-1-888-888-8888

プログラムを実行したときにコンソールに出力される内容の例

電話番号を知りたい方の名前を入力してください。
> 田中
電話番号は 080-1234-5678 です。

電話番号を知りたい方の名前を入力してください。
> 鈴木
電話番号は 090-0000-0000 です。

電話番号を知りたい方の名前を入力してください。
> マイケル
電話帳に名前が登録されていません。別の方の名前を入力してください。

想定時間

30分を目安に書けるとよいでしょう。それ以上かかる場合はページ下部の回答を見ることをお勧めします。
 
自分で考える時間も大事ですが、プログラミング勉強し始めたばかりなら、基本的な文法はどんどん書いて覚えるほうが効率が良いですし、気持ち的にも楽です。

ヒント1 処理の流れの詳細とプログラムに起こすための考え方

何から手をつければいいのか、迷っている方もいるかもしれません。そういうときは、やりたいことを細かく分けて、1つずつプログラムに起こしていくのがコツです。
 

処理の流れのイメージ

  1. プログラムを実行する。
  2. コンソールに「電話番号を知りたい方の名前を入力してください。」と表示する。
  3. ユーザーが適当な名前をコンソールに入力する。
  4. 名前が電話帳に登録されていたら、コンソールに電話番号を出力する。名前が電話長に登録されていなければ、コンソールに「電話帳に名前が登録されていません。別の方の名前を入力してください。」と出力する。

 
まずは「2.コンソールに「電話番号を知りたい方の名前を入力してください。」と表示する。」処理までを作ってみましょう。

ヒント2 入力を受け取るSystem.inとScannerの使い方

「3.ユーザーが適当な名前をコンソールに入力する。」はjava.util.ScannerとSystem.inを使うことでを実装することができます。

Scannerを使ったサンプルプログラム

import java.util.Scanner;
public class SampleScanner {

	public static void main(String[] args) {

		// Scannerのインタンスを生成する
		Scanner scanner = new Scanner(System.in);

		// ユーザーに入力を促す
		System.out.println("何か入力してください。");
		System.out.print("> ");

		// 入力された内容を受け取る
	    String input = scanner.nextLine();

	    // 入力された内容をコンソールに出力する
	    System.out.println("入力された内容:" + input);

	    // Scannerをクローズ
	    scanner.close();
	}
}

サンプルプログラムのコンソールへの出力結果

何か入力してください。
> 田中
入力された内容:田中

ヒント3 HashMapの使い方のサンプル

電話帳を作るのにHashMapを使います。HashMapの一番基本的な操作は「値を詰める」「値を取り出す」の2つです。下記にサンプルを記載しました。

HashMapを使ったサンプルプログラム

import java.util.HashMap;

public class SampleHashMap {

	public static void main(String[] args) {

		// HashMapのインタンスを生成する
		HashMap<String, String> map = new HashMap<String, String>();

		// HashMapに値を詰める
		map.put("田中", "080-1234-5678");

		// HashMapから値を取得する
		String tel = map.get("田中");

		// 取得した値をコンソールに出力する
		System.out.println(tel);
	}
}

サンプルプログラムのコンソールへの出力結果

080-1234-5678

まとめ

いかがでしょうか。
 
解説と回答コードは、また別のときにご紹介します! お楽しみに。
 
 
 
 
《関連記事》

記事をシェア
MOST VIEWED ARTICLES