icon
icon

繰り返し処理を覚える!Javaのfor文の使い方【初心者向け】現役エンジニアが解説

初心者向けにJavaで書くfor文の使い方について解説しています。繰り返し処理は実際の業務でも使える知識なのでぜひ理解しておきましょう。for文の書き方を説明し、実際に書いた実行結果をもとに解説しています。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

Javaのfor文について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

目次

1時間でできる無料体験!

そもそもJavaについてよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。

 

Javaのfor文って何?

田島悠介

今回は繰り返し処理に使われるfor文を勉強するよ。

大石ゆかり

for文を使うとどんなことができるんですか?

田島悠介

for文は決まった回数だけ繰り返すときに使える命令だよ。プログラムを実行する流れを制御する命令の1つなんだ。

大石ゆかり

繰り返し?どんな時につかうんでしょう?

田島悠介

じゃあ実際にfor文がどんなときに役に立つかプログラムを組んで考えてみよう!

ゆかりちゃん、1から3まで順番に表示するプログラムを作ってくれるかな?

大石ゆかり

そんなの簡単です!こうですよね?

1から3まで表示するプログラム

class Count {
  public static void main(String[] args) {
    System.out.println(1);
    System.out.println(2);
    System.out.println(3);
}

実行結果

1
2
3
大石ゆかり

かんたん、かんたん

田島悠介

よくできたね。じゃあ今度は1から1000まで表示するプログラムを作ってくれるかな?

大石ゆかり

わかりました・・・

コピー貼り付け。コピー貼り付け・・・

1から1000まで表示するプログラム(途中)

class Count {
  public static void main(String[] args) {
    System.out.println(1);
    System.out.println(2);
    System.out.println(3);
    System.out.println(4);
    System.out.println(5);
           ・
           ・
           ・
}
大石ゆかり

わあーーー!めんどくさい!

これは何の罰ゲームですか!(怒)

田島悠介

ごめん、ごめん。嫌がらせをしたかったわけじゃないんだよ。for文を使うと今のプログラムもあっという間に作れるんだよ。数が1万回でも100万回でも!

大石ゆかり

それはスゴイですね!for文早く覚えたいです!

田島悠介

いいね、それじゃあJavaのfor文の基本的な使い方から見ていこう!

 

プログラムでは同じ処理を何度も使うときがよくあります。

そんなときに使えるのがfor文の繰り返し処理です。

for文はカウンタ(回数を数える変数)が指定した値の間なら、同じ処理を繰り返してくれる文法です。

繰り返し同じ処理を行って、順番に情報を表示したり計算させたりできます。

 

本記事ではfor文の基本的な書き方からfor文のネスト(重ねて使う)処理、また配列要素の値をすべて処理する拡張for文についても解説していきます。

Javaを学習し始めたばかりの初心者でも分かりやすいように、実際のコードを見せながら解説しますので、ぜひ最後まで読んで参考にしてください。

for文の中に書く式は覚えにくいかもしれませんが、実際の現場でも使われる大切な文法ですので、何度も書いてみて理解していきましょう。

 

大石ゆかり

田島メンター、for文はどのように使うんですか?

田島悠介

for文は決まった回数を繰り返す処理で使われるんだ。似た機能にwhile文というのもあって、繰り返す回数が決まっていない場合に使われるよ。

大石ゆかり

なるほど。じゃあ、for文は繰り返す回数を指定するんですか?

田島悠介

いい質問だね。for文では回数を数えるためにカウンタになる変数を用意して、カウンタの増減値と条件を決めるんだ。

だから回数を条件にすることもできるし、カウンタを減らしてカウントダウンにしたり、1つおきに数えたりと、アイデア次第でいろいろな繰り返しができるんだ。

まずは、基本の書き方を見てみよう。

 

Javaのfor文とは

for文はJavaの繰り返し処理のひとつで、カウンタを変化させながら指定した条件内で同じ処理を繰り返し行うときに使用します。

繰り返す条件だけでなく、カウンタの最初の値増減値を決める必要があります。

 

[PR] Javaプログラミングで挫折しない学習方法を動画で公開中

Javaでのfor文の書き方を解説

for文は以下のように記述します。

for (初期化式; 条件式; 変化式)
{実行する内容;}

 

初期化式 繰り返したい処理に入る前に、カウンタになる変数に最初の値をセットします。同時に、カウンタの変数を宣言できます。 例:int i = 1 (iを宣言し1を設定する)
条件式 繰り返し処理を行う前に、繰り返すかどうかを毎回判定する条件を設定します。 例:i < 5 (iが5より小さいなら繰り返す)
変化式 繰り返し処理が行われるたびに、カウンタ変数を変化させる処理を記述します。 例:i += 3 (3ずつ増加させる)

変化式を行った結果が条件式の範囲内に当てはまる場合(trueの状態)のみ、”実行する内容”の処理が行われます。

変化式による結果が条件式に当てはまらなくなった場合(falseの状態)、for文による繰り返し処理はそこで終了されます。

 

(例)カウンタを1から始めて3まで繰り返す場合、繰り返す直前のカウンタ値 i の変化

1回目 2回目 3回目 4回目
繰り返す前の
処理
初期化式
int i = 1;
変化式
i++;(1を足す)
カウンタ変数
iの値
1 2 3 4
条件式
i <= 3
true true true false
繰り返し
処理
繰り返す 繰り返す 繰り返す 飛ばして
次の処理へ

そのため、常に結果がtrueになってしまう場合や、条件式を設定していない場合は無限ループとなり、永久に処理を行ってしまう状態になるのです。

 

田島悠介

for文はこの3つの式によって成り立っているんだ。

大石ゆかり

なるほど、「条件式」に当てはまらなくなったらそこで止まるってことですね。

田島悠介

そうだね。もしも他の2つの式が「条件式」にいつまでも到達しない場合は最初に言った通り、永久に処理を行うことになってしまう。

大石ゆかり

結構、注意が必要な文なんですね。

 

コラム

コスパとタイパ、両方結果的に良くなる良くなる学び方とは?

「スクールは高いし時間も縛られて効率が悪い」と考える方は多いと思います。
もちろん、時間も費用もかかることは間違いありません。
ただ 結果的に無駄な学びにお金も時間もかける方がリスクが高いという考えもあります。

コスパ・タイパ最適化の参考として、 テックアカデミー卒業生がスクールを選んだ理由 をご紹介します。

  • ・困ったときに、質問や相談できる相手がいるため挫折しなかった
  • ・プロとして必要なスキルのみを深く学べたので無駄がなかった
  • ・副業案件の提供と納品までのサポートがあったので目的を達成できた

安価・短期間で広く浅く学んでも意味がありません。 本当に自分の目的が達成できるか、それが重要です。
自分にどのスキルや学び方が合っているか、どんな学習方法かなど、お気軽に 無料相談 に参加してみませんか?

カウンセラー・現役のプロへ、何でも気軽に無料相談可能。 30分か60分お好きな時間が選べて、かつ3回まで すべて無料で ご利用できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

今なら相談した方限定の割引・参加特典付き! 無料相談はこちら

Javaで実際にfor文を書いてみよう

まず最初に、変数iに1を代入し、iが10よりも小さいか等しい値まで1ずつ加算させていった場合です。

1から、ひとつずつ増やして10以下なら表示する

class Test {
  public static void main(String[] args) {
    for(int i = 1; i <= 10; i++)
    {System.out.println(i);}
  }
}

上記の記述では、各式を以下のように記述しています。

  • 初期化式がint i=1(整数の変数iを宣言し、1を代入)
  • 条件式がi <= 10(iが10以下か)
  • 変化式がi++(1ずつ増加させる)

 

実行結果は以下のとおりです。

1からひとつずつ数値を増加していき、結果が10になったところで処理が終了します。

実行結果

1
2
3
4
5
6
7
8
9
10

 

次に同じ条件で、今度は変化式をi += 2(2ずつ加算させる)状態にしてみましょう。

1から、ふたつずつ増やして10以下なら表示する

class Test {
  public static void main(String[] args) {
    for(int i = 1; i <= 10; i += 2)
    {System.out.println(i);}
  }
}

 

実行結果は以下のとおりです。

実行結果

1
3
5
7
9

最初の1から2ずつ加えていったものが結果として表示され、9で処理が終了します。

10が出力されないのは、繰り返す直前にiが9から11に変化して、10以下なら繰り返すという条件に当てはまらなくなったためです。

 

for文による繰り返し処理をするためには、数を数えるカウンタとなる変数を初期化し、繰り返し処理の前に条件判定が必要です。

そして、条件を満たしている間はカウンタの値を変化させてから繰り返し処理を行います。
Java for文の基礎説明画像(1.初期化式 2.条件式 3.変化式)

 

for文の無限ループについて解説

以下のfor文は、永久に処理がループになってしまう場合の例です。

(例)繰り返しが止まらないプログラム

class Test {
  public static void main(String[] args) {
    for(int i = 1; i <= 10; i-- )
    {System.out.println(i);}
  }
}

先ほどまでと同じ条件で、今度は変化式をi--(1ずつ減算する)とします。

初期値の1から数値を減算するため、どれだけ変化式を繰り返しても、変数は10よりも小さいか等しい値にしかなりません。

 

実行結果

Java_for_p_3

実行すると、このようにいつまでも処理が終わりません。

この場合は実行している処理を強制的に終了する(コマンドプロンプトの場合はctrl+c)必要があります。

for文による繰り返し処理を行う場合は条件式・変化式の等号、正や負の数などに特に注意することが大切です。

 

以上、Javaで書く基本的なfor文の使い方について解説しました。

繰り返し処理は実際の作業でもよく使うコードなので、テストで何度も書いて覚えましょう。

 

田島悠介

永久ループになってしまう場合の例もやってみたよ。

大石ゆかり

数値がすごいことになってます!

田島悠介

こうなってしまわないように、演算子の向きや条件式の内容はしっかりと確認しよう。

大石ゆかり

そうですね、気をつけたいです。

田島悠介

では、基本はここまでにして、for文の応用的な使い方をみていこう!

 

1時間でできる無料体験!

Javaでfor文を重ねて使う書き方

Javaのfor文のブロックのなかに別のfor文を書いてみましょう。

これは実務でも見かけることがあります。

たとえば、生徒ごとに各教科の合計を計算するとか、横と縦に繰り返して出力するときに使います。

また、配列で多次元(添え字が複数の配列。a[2,5]など)の処理でも使うことができます。

 

(例)かけ算の九九の表を作成するプログラム

public static void main(String[] args){
    int start_num = 1;
    int end_num = 9;
    for(int i = start_num; i <= end_num; i++){
        for(int j = start_num; j <= end_num; j++){
          System.out.print("t" + i * j);
        }
        System.out.println();
    }
}

tはタブ文字(一定の間隔で出力位置をそろえる特殊文字)です。
System.out.println()は出力と同時に改行を行います。上記のコードでは引数がないので、改行のみ行う命令です。

実行結果

1        2        3        4        5        6        7        8        9
2        4        6        8        10        12        14        16        18
3        6        9        12        15        18        21        24        27
4        8        12        16        20        24        28        32        36
5        10        15        20        25        30        35        40        45
6        12        18        24        30        36        42        48        54
7        14        21        28        35        42        49        56        63
8        16        24        32        40        48        56        64        72
9        18        27        36        45        54        63        72        81

 

ここで重要なのは、最初のfor文となる次の部分です。

for(int i = start_num; i <= end_num; i++){

i++という加算部分は、for文処理の最後に加算されます。

そのため、int i = start_num;で指定された変数iの初期値は1から始まり、初回のループ処理(繰り返し処理)では、次のように表示されています。

(実行結果)かけ算の九九の1行目

1        2        3        4        5        6        7        8        9

ここまでは問題ないと思います。

この処理が終了した後、変数iの値に1加算されるため、for文の条件処理である i <= end_num;を判定する際の変数iの値は2になっています。

 

したがって、i(値は2)と1から9まで繰り返すjを掛けた2回目の処理は次のようになります。

(実行結果)かけ算の九九の2行目

2        4        6        8        10        12        14        16        18

そして、iが10になった時点で、10(i) <= 9(end_num) という条件を満たすことができません。

そのため、変数iが10の時は、for文を終了し、今回のプログラムが完了します。

 

Javaの拡張for文で要素を順番に取り出す方法

 

田島悠介

ここまでfor文による繰り返しを見てきたけど、配列でも使えるんだ。もし今まで習った方法で、配列のすべての要素を繰り返す場合はどんなfor文にしたらいいかな?

大石ゆかり

そうですね。配列の添え字はゼロから始まるからカウンタ変数の初期値は0にします。そして配列の数を調べてから条件にしたらいいんですね。

田島悠介

正解! なんだけど実はもっと便利な方法があるんだよ。拡張for文を使うんだ。配列の要素すべてに対して繰り返してくれるよ。そして今までのようにカウンタの代わりになる変数があるんだ。

大石ゆかり

へぇ!そんな便利なfor文があるんですね!拡張for文を教えてください!

 

拡張for文とは

Javaの拡張for文とは、配列の要素(配列内の入れ物)の数だけ繰り返してくれる便利な繰り返し文です。

初期値、条件、変化式を指定する必要がなく、対象となる配列と各要素の値を順番に取り出すための変数を指定します。

※多次元配列(添え字が複数の配列、a[2,5]など)の場合、繰り返しの対象となるのはひとつの次元だけです。たとえばa[2,5]で宣言された二次元配列なら一次元目(a[])か、二次元目(a[][])のどちらかを指定する必要があります。

※他の言語、例えばPHPでは拡張for文はforeachと呼ばれています。

 

拡張for文の書き方

拡張for文は以下のように記述します。

for (要素のデータ型 変数名: 繰り返したい配列){
    繰り返す内容;
}

要素のデータ型を指定した変数に、配列の個々の要素の値が順番に入ります。

※要素の値が入る変数には通常の変数と同じように代入や変更もできますが、もとになっている配列要素の値には影響ありません。

※要素のデータ型と配列を区切る文字は:(コロン)です。通常のfor文で使われる;(セミコロン)ではないので注意してください。

 

拡張for文の例

(例)得点が入った配列points[]の要素の値を出力する

public static void main(String[] args){
    int points[] = {75, 62, 90, 80, 55};
    for(int point: points){
        System.out.println(point);
    }
}

実行結果

75
62
90
80
55

上記のコードではpoint変数にpoints配列の個々の要素の値が順番に入ります。

このように拡張for文を使えば、初期値や変化式などを指定する必要がなく、すべての要素の値を取得できます。

配列のすべての要素に処理したい場合に使っていきましょう!

 

まとめ:Javaのfor文で繰り返し処理を習得しよう

今回はJavaのfor文を学習しました。

for文は基本的に、以下を組み合わせることで記述できます。

  • 初期化式
  • 条件式
  • 変化式
  • 実行する内容

for文を重ねて使う方法や、拡張for文で配列のすべての要素に対して繰り返すといった、さまざまな使い方があることも分かりましたね。

ちなみに、Javaには繰り返し処理を行うwhile文もありますが、繰り返す回数がわからない繰り返しの場合に使います。

Javaについて復習したいという方は、Javaとは何なのか解説している記事をも用意しています。

Javaのfor文は、繰り返す必要のある他の命令と一緒に使って力を発揮する文です。

本記事を何度も読み返して習得し、次のステップに進んでいきましょう。

 

Javaの学習サイトもまとめているので、合わせてご覧ください。

 

Javaを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのJavaコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、JavaやServletの技術を使ったWebアプリケーション開発を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する