Java | 2週間で身につく、アプリを作りながら学ぶJavaの基本 - 3日目

Java Java
スポンサーリンク

3日目のゴールとテーマ

3日目のテーマは
「同じ処理を“繰り返す”力を身につけて、ちょっとしたミニアプリをループで回す」 です。

1日目・2日目で、
「1回だけ動くプログラム」は書けるようになりました。
でも、現実のアプリは「何度も同じことをする」場面だらけです。

今日は、

for文で「回数が決まっている繰り返し」を書く
while文で「条件が成り立つ間ずっと繰り返す」処理を書く
break / continue でループの流れをコントロールする
簡単な「メニュー付きミニアプリ」をループで動かす

ここまでを目指します。


「繰り返し」がないと何が困るのか

同じコードをコピペするのは“負けパターン”

例えば、「1から5までの数字を表示したい」とします。
繰り返しを知らないと、こう書くしかありません。

System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
Java

これでも動きますが、
「1から100まで」になった瞬間、地獄です。

同じパターンを何度も書く
→ 修正が大変
→ ミスもしやすい
→ 読む人もつらい

そこで登場するのが「ループ(繰り返し)」です。


for文の基本形を覚える

「回数が決まっている繰り返し」に向いている

Javaの for 文の基本形はこうです。

for (初期化; 条件; 更新) {
    // 繰り返したい処理
}
Java

いきなり3つ並んでいて難しそうに見えますが、
「カウンター変数を使って、何回目かを数えながら回す」仕組みです。

1から5までの数字を表示する for 文は、こう書けます。

for (int i = 1; i <= 5; i++) {
    System.out.println(i);
}
Java

これを分解してみます。

int i = 1;(初期化)
→ 最初に1回だけ実行される。
→ カウンター変数 i を 1 でスタートさせる。

i <= 5;(条件)
→ ループを回す前に毎回チェックされる。
→ true の間はループを続ける。false になったら終了。

i++(更新)
→ ループの1回分が終わるたびに実行される。
i = i + 1; と同じ意味で、i を1増やす。

つまり、流れはこうです。

i を 1 にする
i <= 5 かチェック → true なので中身を実行
中身(System.out.println(i))を実行
i++ で i が 2 になる
i <= 5 かチェック → true なので中身を実行

i が 6 になったとき、i <= 5 が false になり、ループ終了

この「初期化 → 条件チェック → 本体 → 更新」のサイクルが、for 文の基本です。


for文で「合計」を計算してみる

1〜10の合計を求める

for 文の典型的な使い方のひとつが「合計を求める」です。
1から10までの合計を計算するプログラムを書いてみましょう。

public class Main {
    public static void main(String[] args) {
        int sum = 0;

        for (int i = 1; i <= 10; i++) {
            sum = sum + i;
        }

        System.out.println("1〜10の合計は " + sum + " です。");
    }
}
Java

ここでの重要ポイントを深掘りします。

int sum = 0;
→ 合計を入れておく変数。最初は 0 からスタート。

sum = sum + i;
→ 「今までの合計」に「今回の i」を足して、sum に戻している。
→ 1回目は 0 + 1 → 1
→ 2回目は 1 + 2 → 3
→ 3回目は 3 + 3 → 6
→ …というふうに、合計が育っていく。

for 文の中で「変数を少しずつ更新していく」パターンは、
この先も何度も出てきます。


while文の基本形を覚える

「いつ終わるかは条件次第」の繰り返し

for 文は「回数が決まっている」繰り返しに向いています。
一方で、「いつ終わるかは状況次第」というときに使いやすいのが while 文です。

基本形はこうです。

while (条件) {
    // 条件が true の間、繰り返される処理
}
Java

例えば、「カウントダウンをする」プログラムを while で書いてみます。

public class Main {
    public static void main(String[] args) {
        int n = 5;

        while (n > 0) {
            System.out.println("カウントダウン: " + n);
            n = n - 1;
        }

        System.out.println("発射!");
    }
}
Java

流れはこうです。

n を 5 にする
n > 0 かチェック → true なので中身を実行
n を 1 減らす(4になる)
n > 0 かチェック → true → 中身

n が 0 になったとき、n > 0 が false になり、ループ終了

while 文では、「条件が false になるように、ループの中で変数を変えていく」ことが重要です。
これを忘れると、条件がずっと true のままになり、「無限ループ」になります。


while文で「入力を繰り返し受け取る」

0が入力されるまで足し続ける

while 文のよくある使い方が、「特定の入力が来るまで繰り返す」です。

例えば、「0が入力されるまで、数字を足し続ける」プログラムを書いてみます。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int sum = 0;

        while (true) {
            System.out.print("数字を入力してください(0で終了): ");
            int value = scanner.nextInt();

            if (value == 0) {
                break;
            }

            sum = sum + value;
            System.out.println("現在の合計: " + sum);
        }

        System.out.println("最終的な合計は " + sum + " です。");
    }
}
Java

ここで新しく出てきたのが while (true)break です。

while (true)
→ 条件が常に true なので、本来は無限ループ。
→ ただし、中で break することで抜ける。

break;
→ 「今いるループを強制的に抜ける」命令。
→ ここでは「0が入力されたらループ終了」という意味で使っている。

このパターンは、「いつ終わるかは入力次第」というときにとてもよく使います。


break と continue の違いを整理する

ループの流れを“途中でいじる”2つの道具

ループの中で使える特別なキーワードが2つあります。

break
→ そのループ自体を抜ける(終了する)

continue
→ 「今回の周だけスキップして、次の周に進む」

例で見てみましょう。

for (int i = 1; i <= 5; i++) {
    if (i == 3) {
        continue;
    }
    System.out.println(i);
}
Java

この場合、出力は

1
2
4
5

になります。
i が 3 のときだけ、continue によって println がスキップされるからです。

一方、break を使うとこうなります。

for (int i = 1; i <= 5; i++) {
    if (i == 3) {
        break;
    }
    System.out.println(i);
}
Java

この場合、出力は

1
2

だけです。
i が 3 になった瞬間に break でループ自体が終わるからです。

「ループを完全に終わらせたいときは break」
「その周だけ飛ばして、ループは続けたいときは continue」
と覚えておくと整理しやすいです。


3日目のミニアプリ:簡易メニューアプリ

while文で「メニューを何度も表示する」

ここまでの要素を組み合わせて、
「ユーザーが 0 を選ぶまでメニューを繰り返す」ミニアプリを作ってみましょう。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int total = 0;

        while (true) {
            System.out.println("=== 簡易メニューアプリ ===");
            System.out.println("1: 100円を足す");
            System.out.println("2: 500円を足す");
            System.out.println("3: 合計を表示する");
            System.out.println("0: 終了する");
            System.out.print("番号を選んでください: ");

            int choice = scanner.nextInt();

            if (choice == 0) {
                System.out.println("アプリを終了します。");
                break;
            } else if (choice == 1) {
                total = total + 100;
                System.out.println("100円を足しました。");
            } else if (choice == 2) {
                total = total + 500;
                System.out.println("500円を足しました。");
            } else if (choice == 3) {
                System.out.println("現在の合計は " + total + " 円です。");
            } else {
                System.out.println("その番号は無効です。");
            }

            System.out.println();
        }
    }
}
Java

ここでの重要ポイントを深掘りします。

while (true) で「メニューを無限に繰り返す」
→ 0 が選ばれたときだけ break で抜ける
→ それ以外は、選択に応じて処理をしてから、またメニューに戻る

total という変数をループの外で宣言している
→ ループの中で何度も更新される
→ ループを抜けるまで値が保持され続ける

この形は、今後作る「メニュー付きコンソールアプリ」の基本パターンになります。


for と while をどう使い分けるか

「回数が決まっているか」「条件次第か」

ざっくりとした使い分けの目安はこうです。

回数がはっきり決まっている
→ for 文が向いている
→ 例:1〜10まで、配列の要素数分だけ、など

「いつ終わるかは条件次第」
→ while 文が向いている
→ 例:0が入力されるまで、残高が0になるまで、など

もちろん、for でも while でも書けるケースはたくさんあります。
大事なのは、「自分が何を基準に繰り返したいのか」を意識することです。


3日目で一番大事な感覚

「ループは“時間の流れ”をコードにする」

今日あなたに持ってほしい感覚はこれです。

ループは、単に「同じことを何度もやる」ための仕組みではありません。
アプリの中に「時間の流れ」を作るための道具です。

for で「1から順番に進んでいく」
while で「条件が変わるまで続ける」
メニューを表示して、選択して、また戻る

こういう「時間の中で変化していく状態」を、
ループを使って表現できるようになると、
アプリの表現力が一気に広がります。


3日目のまとめと、4日目への予告

今日やったことを短くまとめると、

for 文で「回数が決まっている繰り返し」が書ける
while 文で「条件が成り立つ間の繰り返し」が書ける
break でループを抜け、continue で1周スキップできる
合計計算やカウントダウン、メニュー付きミニアプリを作れる

4日目は、ここに「配列(同じ型の値をまとめて扱う箱)」を足していきます。
配列とループを組み合わせると、「複数のデータを一気に処理する」ことができるようになります。
そこから先に、「アプリらしさ」がさらに濃くなっていきます。

タイトルとURLをコピーしました