
Java入門|繰り返し処理(ループ)
以下、いただいた文章をもとに、内容をアレンジしながら「繰り返し処理(ループ)」をやさしく詳しく解説します。元の題材はこのアップロード文書に基づいています。
同じ処理は、くり返しにまかせよう。Javaのループがわかると、プログラムはもっとスマートになる。
これまで学んできた条件分岐では、「条件に合うときだけ処理する」「条件に合わないときは別の処理をする」といった流れを作ることができました。けれども、プログラムではそれだけでは足りない場面がたくさんあります。
たとえば、同じメッセージを10回表示したいとき、1から100までの合計を求めたいとき、ある条件を満たすまで何度も処理を続けたいときなどです。こうした場面では、同じような処理を何度も書き並べるのではなく、ひとまとまりの処理を必要な回数だけくり返す仕組みがあるととても便利です。
そこで登場するのが、繰り返し処理(ループ)です。
Javaには代表的な繰り返し文として、for文、while文、do~while文があります。これらを使えるようになると、長いコードを短く整理できるだけでなく、回数の管理や条件に応じた反復処理も書きやすくなります。プログラムらしい処理の流れを作るために、ループはとても大切な考え方です。
今回の内容では、まずもっとも基本的で使いやすいfor文を中心に、繰り返しのしくみを丁寧に見ていきます。回数を数えながら処理を進める感覚がつかめると、Javaのコードを読む力も書く力もぐっと伸びていきます。
繰り返し処理とは何か
繰り返し処理とは、ある処理を何度も実行することです。
日常生活でも、私たちは知らないうちに繰り返しを使っています。たとえば、毎朝の支度、毎週の授業、毎日同じ時刻に行う習慣などは、すべて「同じ流れの反復」と考えることができます。
プログラムでも同じです。たとえば次のような処理は、繰り返しで表現すると自然です。
| やりたいこと | 繰り返しの考え方 |
|---|---|
| メッセージを5回表示する | 5回同じ表示をくり返す |
| 1から10まで順に処理する | 数字を1つずつ増やしながら処理する |
| 条件を満たすまで続ける | 条件が成り立つ間だけ処理を続ける |
このように、繰り返し文を使うと、同じようなコードを何行も並べる必要がなくなります。コードが短くなり、見やすくなり、修正もしやすくなります。
for文の基本
まずは、繰り返し処理の代表であるfor文の形を見てみましょう。
for(初期化; 条件式; 変化式){
繰り返したい処理
}この書き方には、それぞれ次のような役割があります。
| 部分 | 役割 |
|---|---|
| 初期化 | 最初に1回だけ実行される。カウンタ変数の準備をする |
| 条件式 | 繰り返しを続けるかどうかを判定する |
| 変化式 | 1回処理するたびに値を変化させる |
たとえば、1から5まで数えながら処理したい場合は、次のように書けます。
for(int i = 1; i <= 5; i++){
処理
}このfor文は、次の流れで動きます。
- まず変数iに1を入れる
- i <= 5 が成り立つかを調べる
- 成り立つならブロックの中の処理を実行する
- iを1増やす
- もう一度条件を調べる
- 条件が成り立たなくなるまで続ける
つまり、iが1、2、3、4、5の間、同じ処理がくり返されるわけです。
for文の流れをイメージしよう
for文は見た目だけだと少し難しそうに見えるかもしれませんが、流れはとても素直です。
| 手順 | 内容 |
|---|---|
| 1 | カウンタ変数を用意する |
| 2 | 条件を確認する |
| 3 | 条件がtrueなら処理を行う |
| 4 | 変数の値を変える |
| 5 | 再び条件を確認する |
この流れは、たとえば「1から5まで順番に作業をする」と考えると理解しやすいです。
「今何回目なのか」を表す数字を持っておき、それを少しずつ増やしながら処理を進めていくイメージです。
サンプルプログラム:for文で同じ処理をくり返す
まずは、同じメッセージを数回表示するシンプルなプログラムを作成します。
ファイル名:Sample1.java
class Sample1
{
public static void main(String[] args)
{
for(int i = 1; i <= 4; i++){
System.out.println("今日もJavaを練習しています。");
}
System.out.println("練習メッセージの表示が終わりました。");
}
}このプログラムのポイント
このコードでは、変数iを1から4まで変化させながら、同じメッセージを4回表示しています。
最後に、ループの外で終了メッセージを1回だけ表示しています。
実行結果
今日もJavaを練習しています。
今日もJavaを練習しています。
今日もJavaを練習しています。
今日もJavaを練習しています。
練習メッセージの表示が終わりました。どう動いているのか
| iの値 | 条件 i <= 4 | 実行される処理 |
|---|---|---|
| 1 | true | メッセージを表示 |
| 2 | true | メッセージを表示 |
| 3 | true | メッセージを表示 |
| 4 | true | メッセージを表示 |
| 5 | false | ループ終了 |
このように、条件がfalseになった時点で繰り返しは終わります。
ループ変数を使うと何回目かがわかる
for文では、回数を管理している変数をループの中で使うことができます。これによって、「今は何回目なのか」「どの番号を処理しているのか」といった情報を表示できます。
これは実用面でもとても大切です。たとえば、連番で表示したり、順番に処理を進めたり、データの番号を扱ったりするときに便利です。
サンプルプログラム:何回目の処理かを表示する
ファイル名:Sample2.java
class Sample2
{
public static void main(String[] args)
{
for(int i = 1; i <= 5; i++){
System.out.println(i + "回目のあいさつです。おはようございます。");
}
System.out.println("あいさつの表示が終わりました。");
}
}実行結果
1回目のあいさつです。おはようございます。
2回目のあいさつです。おはようございます。
3回目のあいさつです。おはようございます。
4回目のあいさつです。おはようございます。
5回目のあいさつです。おはようございます。
あいさつの表示が終わりました。ここで見てほしいところ
ループのたびに、iの値が1ずつ増えていきます。
そのため、同じメッセージでも「1回目」「2回目」「3回目」のように変化をつけることができます。
この考え方はとても重要です。
繰り返し処理は、ただ同じことを何度もするだけではありません。回数に応じて少しずつ変化する処理を書くことができます。
ループ内で使う変数の役割
for文の中で宣言した変数は、多くの場合「カウンタ変数」として使われます。
この変数には、次のような役割があります。
| 役割 | 例 |
|---|---|
| 回数を数える | 1回目、2回目、3回目 |
| 番号を表す | 1番の商品、2番の商品 |
| 値を順番に変える | 1から10まで増やす |
| 条件の判定材料にする | 何回くり返したかで終了する |
for文を理解するときは、「この変数が今どんな値を持っているか」を意識すると、とてもわかりやすくなります。
変数の使える範囲にも注意
for文の中で宣言した変数は、そのfor文の中だけで使えるのが基本です。これを変数の有効範囲と考えるとよいでしょう。
たとえば、
for(int i = 1; i <= 5; i++){
System.out.println(i);
}このiは、for文の外では使えません。
もしループが終わったあとにもiを使いたいなら、先に外で宣言しておきます。
int i;
for(i = 1; i <= 5; i++){
System.out.println(i + "回目の処理です。");
}
System.out.println((i - 1) + "回くり返しました。");このようにすると、ループ終了後にもiを利用できます。
なぜ i - 1 になるのか
ループが終わるとき、iは条件を満たさなくなった値まで進んでいます。
たとえば i <= 5 で止まる場合、終了時のiは6です。
そのため、実際の繰り返し回数を表すには i - 1 を使う必要があります。
サンプルプログラム:入力した回数だけ記号を表示する
「●」を表示するプログラムです。
ファイル名:Sample3.java
import java.io.*;
class Sample3
{
public static void main(String[] args) throws IOException
{
System.out.println("いくつ●を表示しますか?");
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int num = Integer.parseInt(str);
for(int i = 1; i <= num; i++){
System.out.print("●");
}
}
}このプログラムで学べること
この例では、決まった回数ではなく、入力された数だけ繰り返すようになっています。
つまり、for文は固定回数の反復だけでなく、状況に応じた回数の処理にも使えるということです。
実行例
いくつ●を表示しますか?
6
●●●●●●しくみを見てみよう
| 入力された値 | ループ回数 | 表示される記号 |
|---|---|---|
| 3 | 3回 | ●●● |
| 6 | 6回 | ●●●●●● |
| 10 | 10回 | ●●●●●●●●●● |
このように、入力値がそのまま繰り返し回数になります。
サンプルプログラム:くり返しを使って合計を求める
次は、数をただ表示するだけでなく、繰り返しを利用して計算する例です。
「1から入力した数までの偶数の合計」を求めるプログラムを作成します。
ファイル名:Sample4.java
import java.io.*;
class Sample4
{
public static void main(String[] args) throws IOException
{
System.out.println("いくつまでの偶数の合計を求めますか?");
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int num = Integer.parseInt(str);
int sum = 0;
for(int i = 1; i <= num; i++){
if(i % 2 == 0){
sum += i;
}
}
System.out.println("1から" + num + "までの偶数の合計は" + sum + "です。");
}
}実行例
いくつまでの偶数の合計を求めますか?
10
1から10までの偶数の合計は30です。どのように計算しているのか
1から10までの数のうち、偶数だけを足していきます。
| iの値 | 偶数かどうか | sumの変化 |
|---|---|---|
| 1 | いいえ | 0 |
| 2 | はい | 0 + 2 = 2 |
| 3 | いいえ | 2 |
| 4 | はい | 2 + 4 = 6 |
| 5 | いいえ | 6 |
| 6 | はい | 6 + 6 = 12 |
| 7 | いいえ | 12 |
| 8 | はい | 12 + 8 = 20 |
| 9 | いいえ | 20 |
| 10 | はい | 20 + 10 = 30 |
このように、for文の中でif文を組み合わせると、条件に合うものだけを選んで処理できます。
ループと条件分岐は、とても相性のよい組み合わせです。
for文では複数の文もくり返せる
for文の中では、1文だけでなく複数の文をまとめてくり返すことができます。
そのときに使うのがブロックです。
for(int i = 1; i <= 3; i++){
System.out.println("現在の番号は" + i + "です。");
System.out.println("次の処理へ進みます。");
}このように書くと、ブロックの中の2つの文がセットでくり返されます。
ブロックを使う意味
| 書き方 | 意味 |
|---|---|
| 文を1つだけ書く | その1文だけがくり返される |
| {}で囲んで書く | 囲まれた文すべてがくり返される |
実際のプログラムでは、繰り返したい処理が複数行になることが多いので、ブロックはとてもよく使います。
いろいろなfor文の書き方
for文は、初期値や条件、増減のしかたを変えることで、さまざまな繰り返しに対応できます。
① 0から9までの10回くり返し
for(int i = 0; i < 10; i++){
処理
}これは合計10回くり返されます。
② 1から10まで順に処理する
for(int i = 1; i <= 10; i++){
処理
}1から10までの番号をそのまま使いたいときにわかりやすい書き方です。
➂ 10から1へ逆向きに処理する
for(int i = 10; i >= 1; i--){
処理
}カウントダウンや逆順処理でよく使います。
比較表
| 書き方 | 動き |
|---|---|
| i = 0; i < 10; i++ | 0~9を扱う |
| i = 1; i <= 10; i++ | 1~10を扱う |
| i = 10; i >= 1; i-- | 10~1を扱う |
この違いはとても大切です。
特に < と <= の違いで回数が変わるので、最初のうちは丁寧に確認しながら書くのがおすすめです。
for文でよくあるつまずき
for文は便利ですが、初心者のうちは似たようなミスをしやすいです。ここで代表的な注意点を整理しておきましょう。
| よくあるミス | 内容 |
|---|---|
| 条件式の書き間違い | <= と < の違いで回数がずれる |
| 増減のし忘れ | i++ を書かないと終わらないループになることがある |
| 開始値のミス | 1から始めるつもりが0から始めてしまう |
| 変数の範囲の誤解 | for文の中で宣言した変数を外で使おうとしてしまう |
たとえば、次のようなコードは注意が必要です。
for(int i = 1; i <= 5; ){
System.out.println(i);
}このコードではiが増えていないため、条件がずっとtrueのままになり、終わらないループになる可能性があります。

この図のポイントは、for文がただ機械的に動いているのではなく、条件を確認しながら1周ずつ進んでいることを見せる点にあります。
特に初心者にとって大事なのは、次の2点です。
- 最初に初期化が1回だけ行われること
- 処理のたびに変化式が実行され、そのあと再び条件を確認すること
この流れが頭に入ると、for文の動きをかなり正確に追えるようになります。
for文は短くても強力
for文のよいところは、少ないコードでかなり多くのことができる点です。
たとえば、同じ処理を10回書こうとすると、手で10行並べるのは大変ですし、修正も面倒です。ですがfor文なら、条件を少し変えるだけで回数も内容も柔軟に調整できます。
さらに、ループ変数を使えば、
- 回数の表示
- 番号付きの処理
- 合計の計算
- 条件に合うものだけを処理
といったことも簡単に表現できます。
つまりfor文は、同じ処理をくり返すための文であると同時に、回数や順序を管理するための文でもあるのです。
繰り返し処理を学ぶ意味
Javaを学んでいくと、繰り返し文は必ず何度も出てきます。
配列、文字列処理、入力の連続処理、ゲームのロジック、表の出力など、さまざまな場面でループが活躍します。
そのため、今の段階でしっかり理解しておくと、この先の学習がとてもスムーズになります。
まずは次のことを意識して練習するとよいです。
| 意識したいこと | 理由 |
|---|---|
| 変数がどう変化しているかを見る | ループの動きが見えるようになる |
| 条件がいつfalseになるかを考える | 終了のタイミングがわかる |
| 何回くり返されるかを数える | ミスを見つけやすくなる |
| ブロックの中の処理を確認する | どこまでが繰り返されるかがわかる |
for文は最初こそ少し構文が長く感じるかもしれませんが、慣れてしまえばとても頼りになる文です。
「何回くり返すのか」「そのたびに何をするのか」を意識しながらコードを読むと、理解がぐっと深まります。
