Javaで数字当てゲームを作る演習|while・if・breakを組み合わせよう

本記事は、Schooの「Java入門 初級【2026年版】」第4回「繰り返し処理」を学んだあとに、while文・if文・breakを組み合わせて数字当てゲームを完成させる方法を整理したい方向けのステップアップ学習記事です。
ただし、Schooを受講していない方でも、Javaの基本を学び始めたばかりであれば読み進められる内容にしています。
Schoo コースページ:Java入門 初級【2026年版】
第4回のエクササイズでは、ランダムに決まった1〜10の数字を、正解するまで入力して当てます。各文が何を担当しているかを分けて考えると、書く順番を整理できます。
完成したい動きを言葉で分ける
- 1〜10の正解を用意する。
- 数字を入力する。
- 正解かどうかをif文で判定する。
- 正解ならbreakでwhile文を終える。
- 不正解なら「違います!」を表示して、次の入力を待つ。
最小の数字当てゲーム
ファイル名: NumberGuess.java
import java.util.Scanner;
public class NumberGuess {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int answer = (int) (Math.random() * 10) + 1;
System.out.println("1〜10の数字を当ててみましょう!");
while (true) {
System.out.print("数字を入力してください:");
int input = scanner.nextInt();
if (input == answer) {
break;
}
System.out.println("違います!");
}
System.out.println("正解です!");
}
}
while (true) は、それだけでは終わりません。この例では、正解したときの break が終了条件です。
実行結果の例
実行結果
1〜10の数字を当ててみましょう! 数字を入力してください:4 違います! 数字を入力してください:7 正解です!
少し変更してヒントを出す
ファイル名: NumberGuess.java
import java.util.Scanner;
public class NumberGuess {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int answer = (int) (Math.random() * 10) + 1;
System.out.println("1〜10の数字を当ててみましょう!");
while (true) {
System.out.print("数字を入力してください:");
int input = scanner.nextInt();
if (input == answer) {
break;
} else if (input < answer) {
System.out.println("もっと大きい数字です!");
} else {
System.out.println("もっと小さい数字です!");
}
}
System.out.println("正解です!");
}
}
正解以外も、入力が答えより小さいか大きいかに分けるとヒントを出せます。if、else if、else はどれか1つだけが実行されます。
よくあるエラー
正解時にbreakを書かないと、正解メッセージのあともゲームが続きます。また、input = answer は比較ではなく代入です。数値が同じか比べるときは input == answer を使います。
確認問題
- 正解のときに「正解です!」を表示してからbreakするように書き換えてください。
- 入力が1未満または10より大きいときに、範囲外のメッセージを表示する処理を考えてください。
- 入力した回数を数え、正解時に表示する処理を追加してください。
演習後の確認:こちらのページを使って、自分で考えた内容を見直せます。
あわせて読みたい関連記事
まとめ
数字当てゲームは、繰り返し・条件分岐・ループ終了を1つのプログラムで確認できる演習です。while文の終了条件をbreakに任せていること、if文で正解と不正解を分けていることを意識して読み直しましょう。