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

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

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

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

Q&A

解決済

1回答

4263閲覧

JAVA 拡張for文を使用して最大値を求めることについて

sodium_chem

総合スコア2

Java

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

0グッド

0クリップ

投稿2020/05/24 05:34

編集2020/05/24 06:14

前提・実現したいこと

JAVAのコレクションフレームワークにおいて、拡張for文とMath.maxを使用して最大値をだしたい。
目標「31歳が年長者です」と出力したい。

現在のコード

java

1import java.util.HashMap; 2import java.util.Map; 3import java.util.Map.Entry; 4 5public class MapPractice { 6 7 public static void main(String[] args) { 8 // TODO 自動生成されたメソッド・スタブ 9 10 Person sato = new Person("佐藤",22); 11 Person monzen = new Person("門前",22); 12 Person suzuki = new Person("鈴木",31); 13 14 Map<String,Integer> personMap = new HashMap<String,Integer>(); 15 16 personMap.put(sato.getName(),sato.getAge()); 17 personMap.put(monzen.getName(),monzen.getAge()); 18 personMap.put(suzuki.getName(),suzuki.getAge()); 19 20 for(Entry<String,Integer>entry:personMap.entrySet()) { 21 System.out.println(entry.getKey() + "は"+ entry.getValue()+"才"); 22 23 } 24 25 26 } 27 28}

わからないこと

java

1for(String key:personMap.keySet()) { 2 3 System.out.println(personMap.get(key)+"が年長者です。"); 4 }

において、すべての年齢の値を取得はできたが、Math.maxをここにどう組み合わせばいいのかがよく理解できていません。
Math.maxは値を2つ以上用意する必要がある。
⇒値を3つ取得しがそこからどう、Math.Min(a, Math.Min(b, c)))につなげたらいいのかがよくわかっていません。

ヒントや考え方等を教えていただけると幸いです。

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

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

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

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

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

sodium_chem

2020/05/24 05:59

ご指摘ありがとうございます。質問の修正をすることができました。次からMarkdownでよりわかりやすくかけるように頑張ります。
Yasumichi

2020/05/24 06:04

ちょっとうまくいってないので LouiS0616 さんの回答の「コードの貼り方について」も参考にしてください。 ```java ここにソースを書く ``` 「ここにソースを書く」の部分にソースコードを入れます。 ```java import java.util.Map; import java.util.Map.Entry; import java.lang.Math; public class MapPractice { public static void main(String[] args) { int maxAge = 0; String senior = ""; Person sato = new Person("佐藤", 22); Person monzen = new Person("門前", 22); Person suzuki = new Person("鈴木", 31); Map<String, Integer> personMap = new HashMap<String, Integer>(); personMap.put(sato.getName(), sato.getAge()); personMap.put(monzen.getName(), monzen.getAge()); personMap.put(suzuki.getName(), suzuki.getAge()); for (Entry<String, Integer> entry : personMap.entrySet()) { System.out.println(entry.getKey() + "は" + entry.getValue() + "才"); maxAge = Math.max(maxAge, entry.getValue()); if (maxAge == entry.getValue()) { senior = entry.getKey(); } } System.out.println(String.format("%s が年長者です。", senior)); } } ```
guest

回答1

0

ベストアンサー

次のような手順で解決できるでしょう。

  1. ループに入る前に暫定の最大値mを用意します。int m = ???;
  2. ループ内でmの値を更新します。mとentry.getValue()と、大きいほうをmに代入すれば良いです。

mの初期値ですが、-1あたりにするのが妥当でしょう。
一周でもループが回れば書き換えられる筈ですから。

for文を利用する方法は、前以て要素数が分からないときにも有効です。

コードの貼り方について

teratailには、コードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押して下さい。
Java

投稿2020/05/24 05:47

編集2020/05/24 06:20
LouiS0616

総合スコア35668

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

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

sodium_chem

2020/05/24 06:23

質問内容について丁寧かつその書き方について教えてくださりありがとうございます。 なんとかなりそうです!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問