画像は gemini
で生成したものです。
Javaの初学者の方向けに、Javaを好きになりながら基本概念をイメージしてもらう目的で書いています。
- ゲームを起動する
- 変数というボール
- 配列というボールケース
- データの種類(データ型)
- もし〇〇だったらというif文
- ◯回繰り返すfor文
- 表示させる
- 入力する
- メソッドというモンスターのわざ
ゲームを起動する
コード内の日本語表記はプログラマーが変更するところだと思ってください
// アプリを起動した瞬間
package モンスター育成パッケージ;
import java.util;
public class App {
// ゲーム画面が表示される瞬間
public static void main(String[] args) {
String ボール = "黄色いピカピカしたモンスター";
}
}
}
変数
変数はモンスターを入れておくボールだと思ってください。
モンスター育成ゲームでは、モンスターと一緒に旅をします。
モンスターは100や200に増えるため、すべてのモンスターと二人三脚で歩くのも大変です。
そこで、モンスターを変数というボールに入れておきます。
次のコードは、 ボール
変数に 黄色いピカピカしたモンスター
を入れた状態です。
ボール
という変数名は自由に変更可能です。
// アプリを起動した瞬間
package モンスター育成パッケージ;
import java.util;
public class App {
// ゲーム画面が表示される瞬間
public static void main(String[] args) {
String ボール = "黄色いピカピカしたモンスター";
}
}
}
これにより、次の 黄色いピカピカしたモンスター
の歩幅に合わせて歩く必要がなくなり、 黄色いピカピカしたモンスター
が疲れたから抱っこし続ける必要もなく、 ボール
を持ち運べば良く、旅の足取りが軽くなります。
配列
配列とは、ボールを管理する箱です。
黄色いピカピカしたモンスター
を ボール
に入れて旅をする方法もありますが、 ボール
という変数が10個ぐらいになってくると、どのボールに何が入っているか管理するのが大変になります。
そこで、 ボール変数
をまとめて管理する専用のケースである 配列
を使います。
今回は ボールを8個まとめる専用ケースの配列
をイメージして考えましょう。
黄色の2つのボール変数には、どちらも 黄色いピカピカしたモンスター
が入っています。
他の色のボールには、それぞれ、水色のそーなんだーって感じるモンスター
や 赤色のファイヤーボール出しそうなモンスター
が入っていたりします。
配列という専用のケースに入れているだけで、いつも戦うスタメンをすぐに呼び出せるというメリットもあります。
継承
質問する方法
- 「むしろ「助けて」がちゃんと言えるだけでも十分偉い」参照:https://blog.tinect.jp/?p=89263
-手遅れになる前に「困っています」を出力できている
-何がしたくて、何が出来ていないかを言語化できている
-何をやろうとしたか、どこまで試みたかを言語化できている
-普段の進捗をちゃんと周囲に報告・共有している
-助けを求める際、必要な人を巻き込めている
-自然と感謝の言葉を口に出来ている
困っている時に質問する例
- 手遅れになる前に「困っています」を出力する例
- 「例外処理について学んでいるんですが、エラーが出る原因が特定できず、次のステップに進めない状態です。助けていただけますか?」
- 「課題の提出期限が近いんですが、forループでうまく条件を設定できません。何か間違いに心当たりがありますか?」
- 「Javaのインストールは済んだんですが、IDEの使い方が全然わからなくて、困っています。基本操作を教えてもらえますか?」
- 何がしたくて、何が出来ていないかを言語化する例
- 「簡単なゲームを作りたくて、配列を使おうとしていますが、要素のアクセス方法がわかりません。」
- 「オブジェクト指向の概念を使ってコードを書きたいんですが、クラスとインスタンスの違いが理解できていない気がします。」
- 「データを入力して結果を表示するプログラムを作りたいのに、Scannerクラスのインポートはできていますがうまく機能しません。」
- 何をやろうとしたか、どこまで試みたかを言語化する例
- 「クラスを作成し、フィールドとメソッドを定義しましたが、メソッドが正しく呼び出せませんでした。コードを見て何が問題か教えていただけますか?」
- 「例外を試しに自分で投げてみたんですが、catchブロックで処理できないようです。書き方が間違っているのでしょうか?」
- 「リストの要素をソートするプログラムを書こうとして、Collections.sortを試しましたが、コンパイルエラーが出てしまいます。」
- 普段の進捗を周囲と共有する例
- 「今日、if文とfor文を使って簡単なプログラムを作りました!でも、コードが冗長なので改善のヒントが欲しいです。」
- 「配列の基本を学んで、要素を追加したり削除したりできるようになりました!次はリストを使ってみたいと考えていますが、ポイントがあれば教えてください。」
- 「先週やっとオブジェクト指向を使った簡単なアプリケーションを作れました!まだコードの整理方法に悩んでいます。」
- 必要な人を巻き込む例
- 「初学者同士で話し合ったんですが解決できず、経験者の方の視点が欲しいです。for文の応用について教えていただけませんか?」
- 「オンラインで調べてもなかなかピンとこないので、Javaに詳しい方のサポートをお願いしたいです。」
- 「グループディスカッションで作ったコードがエラーだらけなので、プロのアドバイスをいただけるとありがたいです!」
- 自然と感謝の言葉を口にする例
- 「おかげさまでクラスとオブジェクトの違いが理解できました!本当に助かりました!」
- 「教えていただいたコードの改善方法で、動作がスムーズになりました。ありがとうございます!」
- 「アドバイス通りに直したらエラーが解消しました!本当に感謝しています!」
具体的な質問文
「Java のメソッドの戻り値について質問です。現在、配列の要素数を数えるメソッド countElements を実装しようとしていますが、return 文で何を返せば良いのか分からず、困っています。
①具体的には、次のコードで、与えられた int 型の配列 array の要素数を数え、その結果を int 型で返したいと考えています。
public int countElements(int[] array) {
// ここに要素数を数える処理を記述
// return ???; // 何を返せば良いか分からない
}
②これまでに試したこととしては、return array.length; と記述してみましたが、コンパイルエラーが発生しました。エラーメッセージは「型が一致しません」というものでした。array.length は int 型の値を返すはずなので、原因が分からず、行き詰まってしまいました。
③現況はチームのSlackチャンネルで共有しており、現在の状況も報告済みです。この問題について、〇〇さん(メンター)と△△さん(チームリーダー)にも相談しましたが、お二方とも「戻り値の型をもう一度確認してみて」というアドバイスをくださいました。しかし、何度確認しても int 型で間違いないように思えます。
お手数をおかけしますが、この問題について、何か解決策をご教授いただけないでしょうか。よろしくお願いいたします。」
ポイント:
- 手遅れになる前に「困っています」を出力: 冒頭で「困っています」と明示的に伝えることで、質問者の状況を理解しやすくしています。
- 何がしたくて、何が出来ていないかを言語化: 配列の要素数を数え、その結果を int 型で返したいが、return 文で何を返せば良いか分からないことを明確にしています。
- 何をやろうとしたか、どこまで試みたかを言語化: return array.length; を試したこと、コンパイルエラーが発生したこと、エラーメッセージの内容などを具体的に記述しています。
- 普段の進捗をちゃんと周囲に報告・共有: Slackチャンネルで進捗状況を共有していることを伝え、普段からのコミュニケーションをアピールしています。
- 助けを求める際、必要な人を巻き込む: メンターとチームリーダーに相談したことを伝え、周囲の協力を得ようとする姿勢を示しています。
- 自然と感謝の言葉を口にする: 質問の最後に感謝の言葉を述べ、丁寧なコミュニケーションを心がけています