質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

2882閲覧

Java連想配列

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/05/09 10:02

ISO 3166-2:JP の規格に基づき47都道府県のコードをキーに県名を引き出すことができる連想配列を作成しJP-17の県の県名を表示せよ。ただし県名は漢字、ひらがな、カタカナのいずれかでも取り出せるように設計せよ

上記のような課題で以下のように漢字で表示することはできました。県名を表示することはできました。ただ、ひらがな、カタカナ、漢字のいずれかでも取り出せるようにする設計が上手くいきません。

Java

1import java.util.HashMap; 2import java.util.Map; 3 4public class Main { 5 6 public static void main(String[] args) { 7 Map<String, String> a = new HashMap<String, String>(); 8 a.put("JP-02","青森県"); 9 a.put("JP-03","岩手県"); 10 a.put("JP-04","宮城県"); 11 a.put("JP-05","秋田県"); 12 a.put("JP-06","山形県"); 13 a.put("JP-07","福島県"); 14 a.put("JP-08","茨城県"); 15 a.put("JP-09","栃木県"); 16 a.put("JP-10","群馬県"); 17 a.put("JP-11","埼玉県"); 18 a.put("JP-12","千葉県"); 19 a.put("JP-13","東京都"); 20 a.put("JP-14","神奈川県"); 21 a.put("JP-15","新潟県"); 22 a.put("JP-16","富山県"); 23 a.put("JP-17","石川県"); 24 a.put("JP-18","福井県"); 25 a.put("JP-19","山梨県"); 26 a.put("JP-20","長野県"); 27 a.put("JP-21","岐阜県"); 28 a.put("JP-22","静岡県"); 29 a.put("JP-23","愛知県"); 30 a.put("JP-24","三重県"); 31 a.put("JP-25","滋賀県"); 32 a.put("JP-26","京都府"); 33 a.put("JP-27","大阪府"); 34 a.put("JP-28","兵庫県"); 35 a.put("JP-29","奈良県"); 36 a.put("JP-30","和歌山県"); 37 a.put("JP-31","鳥取県"); 38 a.put("JP-32","島根県"); 39 a.put("JP-33","岡山県"); 40 a.put("JP-34","広島県"); 41 a.put("JP-35","山口県"); 42 a.put("JP-36","徳島県"); 43 a.put("JP-37","香川県"); 44 a.put("JP-38","愛媛県"); 45 a.put("JP-39","高知県"); 46 a.put("JP-40","福岡県"); 47 a.put("JP-41","佐賀県"); 48 a.put("JP-42","長崎県"); 49 a.put("JP-43","熊本県"); 50 a.put("JP-44","大分県"); 51 a.put("JP-45","宮崎県"); 52 a.put("JP-46","鹿児島県"); 53 a.put("JP-47","沖縄県"); 54 System.out.println(a.get("JP-17")); 55 } 56}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2017/05/09 12:45

01の北海道が抜けてません?
fuzzball

2017/05/10 01:34 編集

@swordoneさん この設問の解答としてはJP-17のデータがあれば問題ないと思います。
guest

回答3

0

県をデータクラスとして漢字、ひらがな、カタカナを保持させてやってはいかがでしょう

java

1public class Main { 2 public static void main(String[] args) { 3 Map<String, Prefecture> a = new HashMap<String, Prefecture>(); 4 5 a.put("JP-17", new Prefecture("石川県", "いしかわ", "イシカワ")); 6 System.out.println(a.get("JP-17").getKanji()); 7 } 8} 9 10class Prefecture { 11 private final String kanji; 12 private final String hiragana; 13 private final String kana; 14 Prefecture(String kanji, String hiragana, String kana) { 15 this.kanji = kanji; 16 this.hiragana = hiragana; 17 this.kana = kana; 18 } 19 protected String getKanji() { 20 return kanji; 21 } 22 protected String getKana() { 23 return kana; 24 } 25 protected String getHiragana() { 26 return hiragana; 27 } 28} 29

投稿2017/05/09 10:49

TakeoAsai

総合スコア880

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

県名は漢字、ひらがな、カタカナのいずれかでも取り出せるように設計せよ

「設計せよ」であって、コードを書けではないので、どのような連想配列が求められているかを考える必要があるのではないでしょうか?

Java組込みの HashMap<String, String> は質問文にある通り、一つの文字列に対して、一つの答え(この場合だと漢字の都道府県名)しか返さないので不適切です。この問題を解決する MyHashMap を設計する必要があります。

さて、MyHashMap に get メソッドがあるとして、その引数は何でしょう?引数はいくつ要りますか?戻り値は何を返せばよいですか?
それを考えるのが「設計する」ということです。

投稿2017/05/09 12:56

koko_u

総合スコア936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

県名を表示することはできたとのことですので、どんなやり方であれまず自分がわかる範囲でどんな実装が考えられるかをやってみてください。もしできたなら、自分の実装(設計)を見つめ、嬉しくない点があれば、その点を具体的に明記した上で質問してみるのもよいでしょう。

それはそれとして・・・

あなたはクラスを定義したり、ジェネリックスがどういうものかわかるでしょうか。ご質問の内容ではそれをどの程度理解されているかは不明です。

それらがわかるならばそれを応用するような設計を考えてみましょう。もしどちらかがわからなくても、問題そのものを解くことはできます。今と同じような方針のメソッドを漢字用、ひらがな用、カタカナ用に作ればよいのです。それは出題者が期待するものとは違うかも知れませんが、クラスとジェネリクスの一定の知識なしにそのような設計をすることはできませんし、それを人に教わっても問題を解いたことにはならないと思います。


すでに他の方から回答がついてしまってますので本回答はちょっと虚ろに見えますね・・・

自分の意見はkoko_uさんとほぼ同じです。MyHashMapが必要というのはkoko_uさんが質問者さんへ考え方の誘導としてコメントされたと思います。自分はジェネリックスが分かりますか?という形での問いかけにしてみました。

投稿2017/05/10 01:21

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問