支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • Javaで使われるfor文について(

◎Javaのfor文について

繰り返しの指定方法として、「ある条件が成立するまで繰り返す」という方法と「〜回繰り返す」という方法があります。後者の何回繰り返しは、while文・do-while文でも記述することも可能です。しかし、for文を使ったコードの方がシンプルで見やすいソースコードになります。

for文の基本形は以下のようになります。


//forの基本形(10回繰り返す場合)
for (int i = 0; i〈10; i++) {

この基本形を理解することで10回、100回、500回と様々な繰り返しに対応する事が出来ます。この上記にある基本形の「10」のところを「100」や「500」に変えるだけで対応する事が可能です。

【for文を利用したプログラムの書き方】

では具体的に「こんにちは」を10回繰り返すプログラムを見ていきます。


//基本的なfor文
public class Main {
	public static void main(String[] args) {
		for(int i = 0; i 〈 10; i++) {
		    System.out.println("こんにちは");
		}
	}
}

◯ for文の各部の意味

forに続くカッコの中はセミコロンによって3つに区切られています。その3つの部分(①初期化処理、②繰り返し条件、③ 繰り返し時処理)から構成されています。


for (int i = 0; i〈10; i++) {

【初期化処理 (int i = 0; )】

for文による繰り返しが始まるにあたり、最初に1回だけ実行される文になります。ここでは、「何周目のループかを記録しておく変数」を定義します。このような変数をループ変数と言います。

【繰り返し条件(i〈 10;)】

ブロックの内容を実行する前に評価され、「ループを継続するか否か」を判定する条件式になります。評価結果がtrueの時は、「{ 以降のブロック」が繰り返し実行されます。

【繰り返し時処理(i++)】

for文のブロックを最後まで処理して、} まで到達した直後に自動的に実行される文になります。通常は、「i++」のようにループ変数の値を1だけ増やす文を書きます。

◆ループ変数

初期化処理で宣言するループ変数に関してポイントが3つあります。

✴︎ループ変数の名前は自由である事

ループ変数の名前は自由に設定する事が出来ます。しかしfor文より前で、すでに宣言されている変数名は使う事が出来ないので注意が必要です。

✴︎ブロック内で利用可能

ループ変数も通常の変数であるため、ブロック内での計算や表示に使う事が出来ます。具体例として以下のプログラムを見てみましょう。


public class Main {
	public static void main(String[] args) {
		for(int i = 0; i 〈 3; i++) {
		    System.out.println("現在" + (i + 1) + "週目→");
		}
	}
}
//実行結果
現在1週目→現在2週目→現在3週目→
✴︎ブロック外では使用不可

先ほどはブロック内で使えると紹介しましたが、for文を抜けるとループ変数は消失してしまいます。そのため注意が必要になります。

◯複雑なfor文について

forは単純な「〜回繰り返す」という繰り返しだけでなく、forは様々なバリエーションがあり高度な繰り返しを表現する事が出来ます。


//ループ変数を1からスタートする
for(int i = 1; i < 10; i++) {・・・}

//ループ変数を2ずつ増やす
for(int i = 0; i < 10; i += 2) {・・・}

//ループ変数を10から1ずつ1まで減らしていく
for(int i = 10; i > 10; i--) {・・・}

//ループ変数を初期化しない
for(; i < 10; i++) {・・・}

//繰り返し時の処理を行わない
for(int i = 0; i < 10;) {・・・}

◎配列とfor文について

forは配列と組み合わせる事ができ、様々なパターンがあります。下記のプログラムを使ってご紹介していきます。

◯ループによる全要素の利用


//ループによる全要素の利用
public class Main {
	public static void main(String[] args) {
		int[] scores = {20, 30, 40, 50, 60};
		for(int i = 0; i < scores.length; i++) {
		    System.out.println(scores[i]);
		}
	}
}
//実行結果
20
30
40
50
60

この配列でのfor文の使い方は最もよく使われています。上記のプログラムは「配列の最初から最後までの全要素を順にアクセスする」というものになります。ループのために最初の要素であるscore[0]〜最後の要素であるscore[4]までを順にアクセスします。このループで配列の要素を順に使っていく事を「配列を回す」とも呼ばれています。

for ループで配列を回す書き方は以下の通りになります。


//for ループで配列を回す
for(int i = 0; i < 配列変数名.length; i++) {
  配列変数名[i]を使った処理
 }

◯ループによる集計

//ループによる集計
public class Main {
	public static void main(String[] args) {
		int[] scores = {20, 30, 40, 50, 60};
		int sum = 0; //集計結果を入れるための変数を初期化
		for (int i = 0; i < scores.length; i++) {
		    sum += scores[I]; //1科目ずつ変数sumに合算する
		}
		int avg = sum / scores.length;
		System.out.println("合計点:" + sum);
		System.out.println("平均点:" + avg);
	}
}

合計点:200
平均点:40

このプログラムは、合計や平均点を求めるときにとても役に立つfor文になっています。4行目には、集計結果を入れるための変数sumを0で初期化して準備しておきます。また、科目の数や点数を変更したい時は上記のプログラムの3行目を修正するだけで、処理する事ができます。

◎まとめ

Javaのfor文についてご紹介しました。for文はプログラミングをする上で、必ず知っておくべき知識になっています。そのため私自身もこの記事を通してしっかりと復習し、これから学習される方にとっても有意義である記事になっていれば幸いです。

【参考文献】

・中山清喬 / 国本大悟 著「スッキリわかるJava入門第3版」