実現したいこと
[‘田中’, 25, ‘男性’]といった氏名・年齢・性別の3つの値が格納された配列を3つ格納した多次元配列を作成し、
for文を使用して全て表示してください。表示例:「田中:25歳男性」
これを拡張for文を用いて解きなさい。
String[][] x = { { "田中", "25", "男性" }, { "佐藤", "22", "女性" }, { "高橋", "27", "男性" } };
for (int i = 0; i < 3; i++) { String answer = ""; for (int j = 0; j < 3; j++) { answer = answer + x[i][j]; if (j == 0) { answer = answer + ": "; } if (j == 1) { answer = answer + "歳"; } } System.out.println(answer); }
前提
ここに質問の内容を詳しく書いてください。
このコードを拡張for文に直したときに変数iとjがStringに代わりifの条件文やx[][]に代入できなくなります。
このコードを拡張for文に直したときの正しいコードと解説を教えてほしいです。
発生している問題・エラーメッセージ
エラーメッセージ
型の不一致
該当のソースコード
java
String[][] x = { { "田中", "25", "男性" }, { "佐藤", "22", "女性" }, { "高橋", "27", "男性" } };
for (String[] i : x) { String answer = ""; for (String[] j :x) { answer = answer + x[i][j]; if (j == 0) { answer = answer + ": "; } if (j == 1) { answer = answer + "歳"; } } System.out.println(answer); }
補足情報(FW/ツールのバージョンなど)
eclipse
拡張for文は、リストの内容が均一の場合に使えますが、内側のリストのように、インデックスによって役割が違うリストに使うと質問にあるような問題が生じてしまいます。
出題の意図としては、拡張for文は外側のループにのみ適用するのだと思いますが、それではだめでしょうか?
ちなみに、自分でやるなら内側にあるループは無くしますね。処理が繰返しではないので、利点が無いどころがよくないコードになると思います。
ご質問ありがとうございます。
外側ループのみ適応でも問題ないと思います。
ヒントのところに「拡張for文とfor文を使い解きます。
for文ではlengthを使い、配列の長さを取得します。」
と記載があったのでそれを踏まえてどういうコードになるのか教えていただきたいです。
>ヒントのところに
そのヒントなるものは質問本文に書かれていません。後からそのように出されると回答側も考え直したりと手間が増えてしまいます。
質問は編集出来ますので、ヒントの含めて問題全文をご提示されては如何でしょうか。
また一応確認ですが、この問題は何か学校等に提出するようにな類では無いのでしょうか。