Java の基礎知識

【Javaプログラム】ループ処理をおこなうfor文を理解しよう!

Java入門講座も佳境に入ってきました。

今回紹介する「for文」は、配列と切っても切れない関係にあります。それはfor文がループ処理をおこなうものだからです。

配列については、下記の記事を参照してください。次回の記事で配列を使います。

では、そもそもループ処理とはなんでしょうか?

この記事でわかること

  • ループ処理とは何か
  • Javaでループ処理をおこなうfor文の使い方
  • for文を使い1から10までの合計を求める例
  • for文で配列を処理する例

Java入門-ループ処理とは?

まず、ループ処理とは何でしょうか。

ループ」(Loop)処理とは、プログラムにおいて、繰り返しておこなう処理のことです。繰り返し処理ともいいます。

数学の「総和」(Σ:シグマ)や「総乗」(Π:プロダクト)が使われている計算は、ループ処理で計算ができます。そのほかにもループ処理を用いれば、配列を効率的に扱えます。

Javaで可能なループ処理

  • for文(今回扱うもの)
  • while文
  • do while文
  • ForEachメソッドチェーン

javaの「for」文は、非常に柔軟です。javaのfor文が使えれば他のループ処理を覚える必要が無いほどです。私はJavaプログラムで「while」文を記述した記憶が、ほとんどありません。

for文の基本と1から10までの合計の計算

それでは、まずfor文の基本を確認しましょう。

上記は、1から10までの合計を求めて画面に表示するプログラムです。

1から10までの合計を求めるということは、for文で変数iの値を「1,2,3,4,5,6,7,8,9,10」と変化させていき、sumに加算していることが分かるでしょうか。

もう少し細かくfor文についてみていきましょう。

for文の基本の形

for ( 変数の型 変数名 = 初期値終了条件変数の更新処理 ) {
  処理;
  :
}

ここで注目したいのがforの丸括弧「( )」に含まれる2つのセミコロン「」の存在です。

ココがポイント

for文では、このセミコロン2つで、カッコ内部を3つに分けています

  • 最初の部分:変数の定義と初期化処理
  • 真中の部分:終了条件
  • 最後の部分:変数の更新処理

for文では最初に、セミコロンで分けられた前方の「初期化処理」が実行されます。
続けて、セミコロンで分けられた中央の「終了条件に合致するか否か」が判断されます。

for文の判定条件

  • 終了条件の結果が真(True):for文を継続する
  • 終了条件の結果が偽(False):for文を終了する

判定条件が真の状態で処理を継続する場合、「波括弧内部({ })で囲まれた範囲」の処理が実行されます。これらの処理を実行した後、セミコロンで分けられた最後の、「変数の更新処理」がおこなわれます。 なお、ループに際して更新している変数を「カウンタ変数」といいます

for文で配列を処理する

続けて、for文で配列を処理する方法を学びましょう。なお、Java配列の基本については、以下の記事をお読みください。

まず以下のようなデータがあります。なお、ここで定義するデータはすべて架空のものです。

氏名 性別 得点
黒沢 房男 77
萩野 一樹 74
武藤 彦好 46
小山 保子 60
下村 克 86
小原 仁美 46
桶口 雅栄 65
藤岡 波子 86
黒川 令 47
石塚 織枝 69

これをJavaでコーディングした例が以下のとおりです。これらのデータを、for文を使ってプログラムで処理しましょう。

Javaで名前の配列を定義した例
Javaで性別の配列を定義した例
Javaで得点の配列を定義した例

for文で配列の内容を出力する

まず、手始めにfor文で配列の内容を出力するプログラムを書いてみましょう。

このプログラムを実行すると、名前と性別に得点が出力される

このプログラムは、見た目通りなのでそこまで難しくないでしょう。配列へアクセスする際の添字として、for文で定義している変数「i」を用いています。なお、forの終了条件として「i < names.length」という記述をしています。

この「names.length」という記述は、配列「names」の要素数(文字数)を取得するものです。この例では、「names.length = 10」という値になります。

for文で配列の合計と平均を求める

次に、全体の合計を求めてみましょう。これはさきの例で紹介した「1から10の合計を求める」方法と共通します。

今回はiを直接合計するのではなく、配列の添字にiを指定して合計を求めます。そして、求めた合計を配列の要素数で割って、平均も求めましょう。

forで合計と平均を求める例。難しいところはなにもない。

for文とcontinue文

次に、男性のデータのみを処理してみましょう。

for文では、「continue」文を使うことで、処理を途中で飛ばして、次のループ処理へ継続(=continue)することができます。

特定のデータを読みとばす場合、continue文を使う

ここで注目するのは、sexes[i]の値がfalseの場合という条件を書いていることです。この条件が成り立つということは、要は女性のデータということです。

女性のデータの場合、sumなどを計算をせず処理を飛ばして、次のデータを処理させます。

for文とbreak文

最後の例として、男性の成績を先頭から3件のみピックアップする処理を書いてみましょう。

これには「break文」を用いて、ループ処理を途中で終了すると楽です。

ループ処理を途中で終了するには、break文を使う

まず、新たに「malesCount」という変数が追加されています。この変数には、処理した男性の人数が格納されます。最初は誰も処理していないので、0が設定されています。

ループ内部では、女性のデータはcontinue文によってスキップされます。これにより、continue文の付いたif文の後ろに来るのは、男性のデータを処理するときのみになります。

そこで、男性のデータの場合malesCountを1増やします。この結果が3未満であればそのまま処理し、3以上の場合はbreak文を用いてループ処理自体を終了します。

まとめ

for文はJavaで複雑な処理を書く上で、また私たちが楽をする上でとても重要な働きをしています。正しく理解して、うまく活用しましょう。

ポイント

  • forの基本構造
    • for(変数の型 変数名 = 初期値; 終了条件; 変数の更新式) {
           繰り返す処理
           :
      }
  • for文は数学の「総和」や「総乗」の計算に使用できる
  • for文は配列を繰り返してデータを処理できる
  • for文で特定のデータを読みとばす際に「continue」文を使う
  • for文で特定の条件で処理を中断するには「break」文を使う

よく読まれている記事

1

Shellとは? Shellとは、人間の理解できる言葉を機会へ伝えるプログラムです。 Linux環境でコマンドプロンプト画面を開いているとき、常にShellは起動している状態です。 「Shell」とは ...

2

Linuxは主にサーバー用として利用されるOSです。大規模な基幹システムの開発者、ロボットや家電開発等の組み込み系エンジニア、ネットワーク機器やデータベースに携わるインフラエンジニアは触れることが多い ...

3

プログラミング言語を習得しようと思った時、必ずと言っていいほど候補として挙げられるのが「Java」というプログラミング言語です。 「Java」は、現在日本で最も使われている言語であり、非常に人気のある ...

4

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-Java の基礎知識